{"version":3,"file":"static/chunks/pages/[slug]/[slug2]-493af52679010995.js","mappings":"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","sources":["webpack://_N_E/?d8cf","webpack://_N_E/./components/Attraction/locationmap.tsx","webpack://_N_E/./api/newsletterSubscriptionMutation.ts","webpack://_N_E/./utils/getUserName.js","webpack://_N_E/./layouts/Newsletter/Newsletter.tsx","webpack://_N_E/./node_modules/styled-jsx/dist/index/index.js","webpack://_N_E/./node_modules/styled-jsx/style.js","webpack://_N_E/./api/abondonedCheckoutMutation.ts","webpack://_N_E/./types/pages/things-to-do.ts","webpack://_N_E/./shared-components/FAQs/FAQs.tsx","webpack://_N_E/./components/ThingsToDo/FaqSection/FaqSection.tsx","webpack://_N_E/./components/Attraction/topTip.tsx","webpack://_N_E/./components/Attraction/AddTopTipModal.tsx","webpack://_N_E/./components/ThingsToDo/AttractionTopTips/AttractionTopTips.tsx","webpack://_N_E/./components/ThingsToDo/Header/Header.tsx","webpack://_N_E/./components/ThingsToDo/MobileView/MobileView.tsx","webpack://_N_E/./components/ThingsToDo/ThingsToDo.tsx","webpack://_N_E/./components/Attraction/PageHeroSlider.tsx","webpack://_N_E/./components/Attraction/featuredNav.tsx","webpack://_N_E/./components/Attraction/DateAndPaxModal.tsx","webpack://_N_E/./components/Attraction/topBar.tsx","webpack://_N_E/./components/Attraction/AttractionPage.tsx","webpack://_N_E/./pages/[slug]/[slug2].tsx","webpack://_N_E/./shared-components/Breadcrumb/Breadcrumb.tsx","webpack://_N_E/./utils/getHtmlFromMarkdown.js","webpack://_N_E/./node_modules/next/dist/compiled/client-only/index.js","webpack://_N_E/./node_modules/swiper/modules/a11y/a11y.min.css","webpack://_N_E/./node_modules/swiper/modules/effect-fade/effect-fade.min.css","webpack://_N_E/./node_modules/swiper/modules/lazy/lazy.min.css","webpack://_N_E/./node_modules/swiper/modules/thumbs/thumbs.min.css","webpack://_N_E/<anon>"],"sourcesContent":["\n    (window.__NEXT_P = window.__NEXT_P || []).push([\n      \"/[slug]/[slug2]\",\n      function () {\n        return require(\"private-next-pages/[slug]/[slug2].tsx\");\n      }\n    ]);\n    if(module.hot) {\n      module.hot.dispose(function () {\n        window.__NEXT_P.push([\"/[slug]/[slug2]\"])\n      });\n    }\n  ","import Image from 'next/image';\n\ninterface Iprops {\n  name?: string;\n  address: string;\n  data?: Record<string, any>;\n}\n\nconst LocationMap = ({ name, address, data }: Iprops) => {\n  const hoursOfOperation = data?.hoursOfOperation\n    ?.split('\\n')\n    .filter((e: any) => e);\n  const mapSrc = `https://www.google.com/maps?q=${encodeURIComponent(\n    address\n  )}&output=embed`;\n  return (\n    <div className=\"py-5 mt-2\">\n      <div\n        id=\"map-wrapper\"\n        className=\"px-5 py-10 border-slate-300 rounded-lg border-[1px]\"\n      >\n        <div id=\"google-map\" className=\"max-h-[350px] h-[340px]\">\n          <iframe\n            title={name}\n            src={mapSrc}\n            width=\"100%\"\n            height=\"100%\"\n            loading=\"lazy\"\n            className=\"border-none\"\n          />\n        </div>\n        {data?.address && (\n          <div id=\"address\" className=\"flex pt-5\">\n            <>\n              <div\n                id=\"image-wrapper\"\n                className=\"flex justify-center items-center \"\n              >\n                <Image\n                  src=\"https://res.cloudinary.com/see-sight-tours/image/upload/v1685546372/Remaining%20images/location_qcm6p4.svg\"\n                  width={50}\n                  height={50}\n                  alt=\"See Sight Tours\"\n                  priority={true}\n                />\n              </div>\n              <div className=\"py-2 px-2 text-xl\">{data.address}</div>\n            </>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default LocationMap;\n","import { gql } from '@apollo/client';\n\nconst SUBSCRIBE_TO_NEWSLETTER = gql`\n  mutation SubscribeToNewsletter($status: String, $email: String) {\n    insert_boatnew_news_letter_subscribers(\n      objects: { status: $status, email: $email }\n    ) {\n      affected_rows\n    }\n  }\n`;\nexport default SUBSCRIBE_TO_NEWSLETTER;\n","export function extractUserName(email) {\n  const parts = email.split('@');\n  const username = parts[0];\n  const cleanUsername = username.replace(/[^a-zA-Z]/g, '');\n  return cleanUsername;\n}\n","import React, { useEffect, useState } from 'react';\nimport { toast } from 'react-toastify';\nimport styled from 'styled-components';\nimport 'react-toastify/dist/ReactToastify.css';\nimport { useMutation } from '@apollo/client';\nimport SUBSCRIBE_TO_NEWSLETTER from '../../api/newsletterSubscriptionMutation';\nimport { extractUserName } from '../../utils/getUserName';\nimport { useAuthContext } from '../../utils/context/authContext';\nimport { useRouter } from 'next/router';\nimport Image from 'next/image';\nimport { SocialMediaIcons } from '../../shared-components/SocialMediaIcons';\n\nconst Newsletter = ({}) => {\n  const { user }: any = useAuthContext();\n  const [email, setEmail] = useState('');\n  const [subscribeToNewsletter] = useMutation(SUBSCRIBE_TO_NEWSLETTER);\n  useEffect(() => {\n    setEmail(user !== null && user.emailVerified ? user.email : '');\n  }, [user]);\n\n  const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n    const username = extractUserName(email);\n\n    event.preventDefault();\n    event.stopPropagation();\n    try {\n      const { data } = await subscribeToNewsletter({\n        variables: {\n          email: email,\n          status: 'Subscribed'\n        }\n      });\n      if (data.insert_boatnew_news_letter_subscribers.affected_rows > 0) {\n        const emailData = {\n          userName: username,\n          email: email\n        };\n        await fetch('/api/subscription_mail', {\n          method: 'POST',\n          body: JSON.stringify(emailData)\n        });\n        toast.success('Successfully subscribed to our Newsletters!');\n        setEmail('');\n      } else {\n        toast.error('Subscription failed. Please try again later.');\n        setEmail('');\n      }\n    } catch (error) {\n      if (\n        error instanceof Error &&\n        error.toString().includes('Uniqueness violation')\n      ) {\n        toast.error(\n          'This email is already subscribed. Please use a different email.'\n        );\n      } else {\n        toast.error('An error occurred. Please try again later.');\n      }\n    }\n  };\n\n  const NewsletterHeading = styled.h2`\n    font-weight: 600;\n    text-align: center;\n    color: #333333;\n  `;\n  const SeparatorLine = styled.div`\n    height: 1px;\n    background: rgba(5, 7, 60, 0.6);\n    border: 1px rgba(19, 19, 19, 0.6);\n  `;\n  const Newsletter = styled.p`\n    font-weight: 400;\n    text-align: center;\n  `;\n  const router = useRouter();\n  return (\n    <>\n      <section\n        id=\"newsletter\"\n        className={`sm:pt-16 sm:pb-32 pb-5 pt-14 flex justify-center items-center relative z-10`}\n      >\n        <div className=\"flex flex-col gap-3 sm:gap-4 w-[80%] md:w-[80%] lg:w-[80%] xl:w-[55%] 3xl:w-[45%]\">\n          {/* <div\n            className={`${\n              router.route === '/things-to-do' ? 'block' : 'hidden'\n            }`}\n          >\n            <div className=\"flex justify-center\">\n              <Image\n                src=\"/logo.svg\"\n                width={110}\n                height={110}\n                alt=\"calendar\"\n                className=\"xl:h-[110px] xl:w-[110px] md:h-[110px] md:w-[90px] h-[110px] w-[90px] \"\n              />\n            </div>\n            <div className=\"text-[20px] xsm:text-[22px] sm:text-[32px] md:text-[50px] xl:text-[70px] flex justify-center text-[#222] tracking-[10px] \">\n              COMING SOON\n            </div>\n          </div> */}\n          <div className={`flex flex-col gap-3`}>\n            <p className=\"text-center text-black13 text-opacity-60 text-base sm:text-lg font-normal leading-snug\">\n              Newsletter\n            </p>\n            <NewsletterHeading className=\"text-center text-black13 text-base sm:text-2xl font-semibold sm:leading-[40px]\">\n              Subscribe to our newsletter!\n            </NewsletterHeading>\n            <SeparatorLine className=\"mx-[1rem] sm:mx-[5rem] lg:mx-[10rem]\" />\n          </div>\n          <div className=\"flex justify-center\">\n            <Newsletter className=\"text-sm  sm:text-base md:text-lg text-black13 text-opacity-60 w-[528px]\">\n              Signup to our newsletter and we will make sure to let you know\n              whenever we have news!\n            </Newsletter>\n          </div>\n\n          <form onSubmit={handleSubmit}>\n            <div className=\"flex justify-center relative sm:mx-20 lg:mx-28 2xl:mx-[6rem] 4xl:mx-[14rem]\">\n              <input\n                className=\"rounded-full text-start pl-[5%] md:pl-[3%] text-black13 xxsm:text-[10px] mmsm:text-base msm:text-sm md:text-lg font-medium leading-[18px] p-2 w-[100%] border   border-gray-400 focus:outline-none h-[50px] sm:h-[55px] lg:h-[65px]\"\n                placeholder=\"Enter your email\"\n                name=\"email\"\n                required\n                type=\"email\"\n                onChange={e => setEmail(e.target.value)}\n                maxLength={50}\n                minLength={2}\n                value={email}\n              />\n              <button\n                className={`xxsm:text-xs mmsm:text-sm lg:text-base w-fit leading-[0.5rem] cursor-pointer absolute xxsm:top-[0.2rem] mmsm:top-[0.1rem] sm:top-[0.45rem] xxsm:right-[0.25rem] mmsm:right-0 sm:right-2   bg-primary border-[#1F2C5B] rounded-full font-medium border-2  sm:leading-none text-white  hover:bg-[#2E3D7A] active:bg-[#2E3D7A] hover:shadow-lg focus:shadow-lg focus:outline-none focus:ring-0  active:shadow-lg transition duration-150 ease-in-out p-3`}\n                data-mdb-ripple=\"true\"\n                data-mdb-ripple-color=\"light\"\n              >\n                Subscribe\n              </button>\n            </div>\n          </form>\n        </div>\n      </section>\n    </>\n  );\n};\n\nexport default Newsletter;\n","require('client-only');\nvar React = require('react');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar React__default = /*#__PURE__*/_interopDefaultLegacy(React);\n\n/*\nBased on Glamor's sheet\nhttps://github.com/threepointone/glamor/blob/667b480d31b3721a905021b26e1290ce92ca2879/src/sheet.js\n*/ function _defineProperties(target, props) {\n    for(var i = 0; i < props.length; i++){\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n    }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n}\nvar isProd = typeof process !== \"undefined\" && process.env && process.env.NODE_ENV === \"production\";\nvar isString = function(o) {\n    return Object.prototype.toString.call(o) === \"[object String]\";\n};\nvar StyleSheet = /*#__PURE__*/ function() {\n    function StyleSheet(param) {\n        var ref = param === void 0 ? {} : param, _name = ref.name, name = _name === void 0 ? \"stylesheet\" : _name, _optimizeForSpeed = ref.optimizeForSpeed, optimizeForSpeed = _optimizeForSpeed === void 0 ? isProd : _optimizeForSpeed;\n        invariant$1(isString(name), \"`name` must be a string\");\n        this._name = name;\n        this._deletedRulePlaceholder = \"#\" + name + \"-deleted-rule____{}\";\n        invariant$1(typeof optimizeForSpeed === \"boolean\", \"`optimizeForSpeed` must be a boolean\");\n        this._optimizeForSpeed = optimizeForSpeed;\n        this._serverSheet = undefined;\n        this._tags = [];\n        this._injected = false;\n        this._rulesCount = 0;\n        var node = typeof window !== \"undefined\" && document.querySelector('meta[property=\"csp-nonce\"]');\n        this._nonce = node ? node.getAttribute(\"content\") : null;\n    }\n    var _proto = StyleSheet.prototype;\n    _proto.setOptimizeForSpeed = function setOptimizeForSpeed(bool) {\n        invariant$1(typeof bool === \"boolean\", \"`setOptimizeForSpeed` accepts a boolean\");\n        invariant$1(this._rulesCount === 0, \"optimizeForSpeed cannot be when rules have already been inserted\");\n        this.flush();\n        this._optimizeForSpeed = bool;\n        this.inject();\n    };\n    _proto.isOptimizeForSpeed = function isOptimizeForSpeed() {\n        return this._optimizeForSpeed;\n    };\n    _proto.inject = function inject() {\n        var _this = this;\n        invariant$1(!this._injected, \"sheet already injected\");\n        this._injected = true;\n        if (typeof window !== \"undefined\" && this._optimizeForSpeed) {\n            this._tags[0] = this.makeStyleTag(this._name);\n            this._optimizeForSpeed = \"insertRule\" in this.getSheet();\n            if (!this._optimizeForSpeed) {\n                if (!isProd) {\n                    console.warn(\"StyleSheet: optimizeForSpeed mode not supported falling back to standard mode.\");\n                }\n                this.flush();\n                this._injected = true;\n            }\n            return;\n        }\n        this._serverSheet = {\n            cssRules: [],\n            insertRule: function(rule, index) {\n                if (typeof index === \"number\") {\n                    _this._serverSheet.cssRules[index] = {\n                        cssText: rule\n                    };\n                } else {\n                    _this._serverSheet.cssRules.push({\n                        cssText: rule\n                    });\n                }\n                return index;\n            },\n            deleteRule: function(index) {\n                _this._serverSheet.cssRules[index] = null;\n            }\n        };\n    };\n    _proto.getSheetForTag = function getSheetForTag(tag) {\n        if (tag.sheet) {\n            return tag.sheet;\n        }\n        // this weirdness brought to you by firefox\n        for(var i = 0; i < document.styleSheets.length; i++){\n            if (document.styleSheets[i].ownerNode === tag) {\n                return document.styleSheets[i];\n            }\n        }\n    };\n    _proto.getSheet = function getSheet() {\n        return this.getSheetForTag(this._tags[this._tags.length - 1]);\n    };\n    _proto.insertRule = function insertRule(rule, index) {\n        invariant$1(isString(rule), \"`insertRule` accepts only strings\");\n        if (typeof window === \"undefined\") {\n            if (typeof index !== \"number\") {\n                index = this._serverSheet.cssRules.length;\n            }\n            this._serverSheet.insertRule(rule, index);\n            return this._rulesCount++;\n        }\n        if (this._optimizeForSpeed) {\n            var sheet = this.getSheet();\n            if (typeof index !== \"number\") {\n                index = sheet.cssRules.length;\n            }\n            // this weirdness for perf, and chrome's weird bug\n            // https://stackoverflow.com/questions/20007992/chrome-suddenly-stopped-accepting-insertrule\n            try {\n                sheet.insertRule(rule, index);\n            } catch (error) {\n                if (!isProd) {\n                    console.warn(\"StyleSheet: illegal rule: \\n\\n\" + rule + \"\\n\\nSee https://stackoverflow.com/q/20007992 for more info\");\n                }\n                return -1;\n            }\n        } else {\n            var insertionPoint = this._tags[index];\n            this._tags.push(this.makeStyleTag(this._name, rule, insertionPoint));\n        }\n        return this._rulesCount++;\n    };\n    _proto.replaceRule = function replaceRule(index, rule) {\n        if (this._optimizeForSpeed || typeof window === \"undefined\") {\n            var sheet = typeof window !== \"undefined\" ? this.getSheet() : this._serverSheet;\n            if (!rule.trim()) {\n                rule = this._deletedRulePlaceholder;\n            }\n            if (!sheet.cssRules[index]) {\n                // @TBD Should we throw an error?\n                return index;\n            }\n            sheet.deleteRule(index);\n            try {\n                sheet.insertRule(rule, index);\n            } catch (error) {\n                if (!isProd) {\n                    console.warn(\"StyleSheet: illegal rule: \\n\\n\" + rule + \"\\n\\nSee https://stackoverflow.com/q/20007992 for more info\");\n                }\n                // In order to preserve the indices we insert a deleteRulePlaceholder\n                sheet.insertRule(this._deletedRulePlaceholder, index);\n            }\n        } else {\n            var tag = this._tags[index];\n            invariant$1(tag, \"old rule at index `\" + index + \"` not found\");\n            tag.textContent = rule;\n        }\n        return index;\n    };\n    _proto.deleteRule = function deleteRule(index) {\n        if (typeof window === \"undefined\") {\n            this._serverSheet.deleteRule(index);\n            return;\n        }\n        if (this._optimizeForSpeed) {\n            this.replaceRule(index, \"\");\n        } else {\n            var tag = this._tags[index];\n            invariant$1(tag, \"rule at index `\" + index + \"` not found\");\n            tag.parentNode.removeChild(tag);\n            this._tags[index] = null;\n        }\n    };\n    _proto.flush = function flush() {\n        this._injected = false;\n        this._rulesCount = 0;\n        if (typeof window !== \"undefined\") {\n            this._tags.forEach(function(tag) {\n                return tag && tag.parentNode.removeChild(tag);\n            });\n            this._tags = [];\n        } else {\n            // simpler on server\n            this._serverSheet.cssRules = [];\n        }\n    };\n    _proto.cssRules = function cssRules() {\n        var _this = this;\n        if (typeof window === \"undefined\") {\n            return this._serverSheet.cssRules;\n        }\n        return this._tags.reduce(function(rules, tag) {\n            if (tag) {\n                rules = rules.concat(Array.prototype.map.call(_this.getSheetForTag(tag).cssRules, function(rule) {\n                    return rule.cssText === _this._deletedRulePlaceholder ? null : rule;\n                }));\n            } else {\n                rules.push(null);\n            }\n            return rules;\n        }, []);\n    };\n    _proto.makeStyleTag = function makeStyleTag(name, cssString, relativeToTag) {\n        if (cssString) {\n            invariant$1(isString(cssString), \"makeStyleTag accepts only strings as second parameter\");\n        }\n        var tag = document.createElement(\"style\");\n        if (this._nonce) tag.setAttribute(\"nonce\", this._nonce);\n        tag.type = \"text/css\";\n        tag.setAttribute(\"data-\" + name, \"\");\n        if (cssString) {\n            tag.appendChild(document.createTextNode(cssString));\n        }\n        var head = document.head || document.getElementsByTagName(\"head\")[0];\n        if (relativeToTag) {\n            head.insertBefore(tag, relativeToTag);\n        } else {\n            head.appendChild(tag);\n        }\n        return tag;\n    };\n    _createClass(StyleSheet, [\n        {\n            key: \"length\",\n            get: function get() {\n                return this._rulesCount;\n            }\n        }\n    ]);\n    return StyleSheet;\n}();\nfunction invariant$1(condition, message) {\n    if (!condition) {\n        throw new Error(\"StyleSheet: \" + message + \".\");\n    }\n}\n\nfunction hash(str) {\n    var _$hash = 5381, i = str.length;\n    while(i){\n        _$hash = _$hash * 33 ^ str.charCodeAt(--i);\n    }\n    /* JavaScript does bitwise operations (like XOR, above) on 32-bit signed\n   * integers. Since we want the results to be always positive, convert the\n   * signed int to an unsigned by doing an unsigned bitshift. */ return _$hash >>> 0;\n}\nvar stringHash = hash;\n\nvar sanitize = function(rule) {\n    return rule.replace(/\\/style/gi, \"\\\\/style\");\n};\nvar cache = {};\n/**\n * computeId\n *\n * Compute and memoize a jsx id from a basedId and optionally props.\n */ function computeId(baseId, props) {\n    if (!props) {\n        return \"jsx-\" + baseId;\n    }\n    var propsToString = String(props);\n    var key = baseId + propsToString;\n    if (!cache[key]) {\n        cache[key] = \"jsx-\" + stringHash(baseId + \"-\" + propsToString);\n    }\n    return cache[key];\n}\n/**\n * computeSelector\n *\n * Compute and memoize dynamic selectors.\n */ function computeSelector(id, css) {\n    var selectoPlaceholderRegexp = /__jsx-style-dynamic-selector/g;\n    // Sanitize SSR-ed CSS.\n    // Client side code doesn't need to be sanitized since we use\n    // document.createTextNode (dev) and the CSSOM api sheet.insertRule (prod).\n    if (typeof window === \"undefined\") {\n        css = sanitize(css);\n    }\n    var idcss = id + css;\n    if (!cache[idcss]) {\n        cache[idcss] = css.replace(selectoPlaceholderRegexp, id);\n    }\n    return cache[idcss];\n}\n\nfunction mapRulesToStyle(cssRules, options) {\n    if (options === void 0) options = {};\n    return cssRules.map(function(args) {\n        var id = args[0];\n        var css = args[1];\n        return /*#__PURE__*/ React__default[\"default\"].createElement(\"style\", {\n            id: \"__\" + id,\n            // Avoid warnings upon render with a key\n            key: \"__\" + id,\n            nonce: options.nonce ? options.nonce : undefined,\n            dangerouslySetInnerHTML: {\n                __html: css\n            }\n        });\n    });\n}\nvar StyleSheetRegistry = /*#__PURE__*/ function() {\n    function StyleSheetRegistry(param) {\n        var ref = param === void 0 ? {} : param, _styleSheet = ref.styleSheet, styleSheet = _styleSheet === void 0 ? null : _styleSheet, _optimizeForSpeed = ref.optimizeForSpeed, optimizeForSpeed = _optimizeForSpeed === void 0 ? false : _optimizeForSpeed;\n        this._sheet = styleSheet || new StyleSheet({\n            name: \"styled-jsx\",\n            optimizeForSpeed: optimizeForSpeed\n        });\n        this._sheet.inject();\n        if (styleSheet && typeof optimizeForSpeed === \"boolean\") {\n            this._sheet.setOptimizeForSpeed(optimizeForSpeed);\n            this._optimizeForSpeed = this._sheet.isOptimizeForSpeed();\n        }\n        this._fromServer = undefined;\n        this._indices = {};\n        this._instancesCounts = {};\n    }\n    var _proto = StyleSheetRegistry.prototype;\n    _proto.add = function add(props) {\n        var _this = this;\n        if (undefined === this._optimizeForSpeed) {\n            this._optimizeForSpeed = Array.isArray(props.children);\n            this._sheet.setOptimizeForSpeed(this._optimizeForSpeed);\n            this._optimizeForSpeed = this._sheet.isOptimizeForSpeed();\n        }\n        if (typeof window !== \"undefined\" && !this._fromServer) {\n            this._fromServer = this.selectFromServer();\n            this._instancesCounts = Object.keys(this._fromServer).reduce(function(acc, tagName) {\n                acc[tagName] = 0;\n                return acc;\n            }, {});\n        }\n        var ref = this.getIdAndRules(props), styleId = ref.styleId, rules = ref.rules;\n        // Deduping: just increase the instances count.\n        if (styleId in this._instancesCounts) {\n            this._instancesCounts[styleId] += 1;\n            return;\n        }\n        var indices = rules.map(function(rule) {\n            return _this._sheet.insertRule(rule);\n        })// Filter out invalid rules\n        .filter(function(index) {\n            return index !== -1;\n        });\n        this._indices[styleId] = indices;\n        this._instancesCounts[styleId] = 1;\n    };\n    _proto.remove = function remove(props) {\n        var _this = this;\n        var styleId = this.getIdAndRules(props).styleId;\n        invariant(styleId in this._instancesCounts, \"styleId: `\" + styleId + \"` not found\");\n        this._instancesCounts[styleId] -= 1;\n        if (this._instancesCounts[styleId] < 1) {\n            var tagFromServer = this._fromServer && this._fromServer[styleId];\n            if (tagFromServer) {\n                tagFromServer.parentNode.removeChild(tagFromServer);\n                delete this._fromServer[styleId];\n            } else {\n                this._indices[styleId].forEach(function(index) {\n                    return _this._sheet.deleteRule(index);\n                });\n                delete this._indices[styleId];\n            }\n            delete this._instancesCounts[styleId];\n        }\n    };\n    _proto.update = function update(props, nextProps) {\n        this.add(nextProps);\n        this.remove(props);\n    };\n    _proto.flush = function flush() {\n        this._sheet.flush();\n        this._sheet.inject();\n        this._fromServer = undefined;\n        this._indices = {};\n        this._instancesCounts = {};\n    };\n    _proto.cssRules = function cssRules() {\n        var _this = this;\n        var fromServer = this._fromServer ? Object.keys(this._fromServer).map(function(styleId) {\n            return [\n                styleId,\n                _this._fromServer[styleId]\n            ];\n        }) : [];\n        var cssRules = this._sheet.cssRules();\n        return fromServer.concat(Object.keys(this._indices).map(function(styleId) {\n            return [\n                styleId,\n                _this._indices[styleId].map(function(index) {\n                    return cssRules[index].cssText;\n                }).join(_this._optimizeForSpeed ? \"\" : \"\\n\")\n            ];\n        })// filter out empty rules\n        .filter(function(rule) {\n            return Boolean(rule[1]);\n        }));\n    };\n    _proto.styles = function styles(options) {\n        return mapRulesToStyle(this.cssRules(), options);\n    };\n    _proto.getIdAndRules = function getIdAndRules(props) {\n        var css = props.children, dynamic = props.dynamic, id = props.id;\n        if (dynamic) {\n            var styleId = computeId(id, dynamic);\n            return {\n                styleId: styleId,\n                rules: Array.isArray(css) ? css.map(function(rule) {\n                    return computeSelector(styleId, rule);\n                }) : [\n                    computeSelector(styleId, css)\n                ]\n            };\n        }\n        return {\n            styleId: computeId(id),\n            rules: Array.isArray(css) ? css : [\n                css\n            ]\n        };\n    };\n    /**\n   * selectFromServer\n   *\n   * Collects style tags from the document with id __jsx-XXX\n   */ _proto.selectFromServer = function selectFromServer() {\n        var elements = Array.prototype.slice.call(document.querySelectorAll('[id^=\"__jsx-\"]'));\n        return elements.reduce(function(acc, element) {\n            var id = element.id.slice(2);\n            acc[id] = element;\n            return acc;\n        }, {});\n    };\n    return StyleSheetRegistry;\n}();\nfunction invariant(condition, message) {\n    if (!condition) {\n        throw new Error(\"StyleSheetRegistry: \" + message + \".\");\n    }\n}\nvar StyleSheetContext = /*#__PURE__*/ React.createContext(null);\nStyleSheetContext.displayName = \"StyleSheetContext\";\nfunction createStyleRegistry() {\n    return new StyleSheetRegistry();\n}\nfunction StyleRegistry(param) {\n    var configuredRegistry = param.registry, children = param.children;\n    var rootRegistry = React.useContext(StyleSheetContext);\n    var ref = React.useState(function() {\n        return rootRegistry || configuredRegistry || createStyleRegistry();\n    }), registry = ref[0];\n    return /*#__PURE__*/ React__default[\"default\"].createElement(StyleSheetContext.Provider, {\n        value: registry\n    }, children);\n}\nfunction useStyleRegistry() {\n    return React.useContext(StyleSheetContext);\n}\n\n// Opt-into the new `useInsertionEffect` API in React 18, fallback to `useLayoutEffect`.\n// https://github.com/reactwg/react-18/discussions/110\nvar useInsertionEffect = React__default[\"default\"].useInsertionEffect || React__default[\"default\"].useLayoutEffect;\nvar defaultRegistry = typeof window !== \"undefined\" ? createStyleRegistry() : undefined;\nfunction JSXStyle(props) {\n    var registry = defaultRegistry ? defaultRegistry : useStyleRegistry();\n    // If `registry` does not exist, we do nothing here.\n    if (!registry) {\n        return null;\n    }\n    if (typeof window === \"undefined\") {\n        registry.add(props);\n        return null;\n    }\n    useInsertionEffect(function() {\n        registry.add(props);\n        return function() {\n            registry.remove(props);\n        };\n    // props.children can be string[], will be striped since id is identical\n    }, [\n        props.id,\n        String(props.dynamic)\n    ]);\n    return null;\n}\nJSXStyle.dynamic = function(info) {\n    return info.map(function(tagInfo) {\n        var baseId = tagInfo[0];\n        var props = tagInfo[1];\n        return computeId(baseId, props);\n    }).join(\" \");\n};\n\nexports.StyleRegistry = StyleRegistry;\nexports.createStyleRegistry = createStyleRegistry;\nexports.style = JSXStyle;\nexports.useStyleRegistry = useStyleRegistry;\n","module.exports = require('./dist/index').style\n","import { gql } from '@apollo/client';\n\nconst INSERT_LOGS_ABANDONED_CHECKOUTS = gql`\n  mutation InsertLogsAbandonedCheckouts(\n    $customer_name: String!\n    $email: String!\n    $phone: String!\n    $tour: String!\n    $tour_id: String!\n    $tour_date: String!\n    $pax: Int!\n  ) {\n    insert_logs_abandoned_checkouts(\n      objects: {\n        customer_name: $customer_name\n        email: $email\n        phone: $phone\n        tour: $tour\n        tour_id: $tour_id\n        tour_date: $tour_date\n        pax: $pax\n      }\n    ) {\n      returning {\n        id\n      }\n    }\n  }\n`;\nexport const INSERT_TOP_TIP = gql`\n  mutation InsertTopTip($text: String!, $id: Int!) {\n    insert_strapi_top_tips(objects: { text: $text, attraction: $id }) {\n      returning {\n        id\n        text\n      }\n    }\n  }\n`;\nexport const FETCH_TOP_TIPS = gql`\n  query fetchTopTips($slug: String!) {\n    strapi_Attraction(where: { slug: { _eq: $slug } }) {\n      top_tips(order_by: { id: desc }) {\n        id\n        text\n        dislikes\n        likes\n      }\n    }\n  }\n`;\n\nexport const UPDATE_TOP_TIP = gql`\n  mutation UpdateTopTipLikesAndDislikes($id: Int, $likes: Int, $dislikes: Int) {\n    update_strapi_top_tips(\n      where: { id: { _eq: $id } }\n      _set: { likes: $likes, dislikes: $dislikes }\n    ) {\n      returning {\n        id\n        text\n        likes\n        dislikes\n      }\n    }\n  }\n`;\n\nexport default INSERT_LOGS_ABANDONED_CHECKOUTS;\n","export enum EPageType {\n  THINGS_TODO = 'things-todo'\n}\nexport type Faq = {\n  question: string;\n  answer: string;\n};\nexport type LinkItem = {\n  name: string;\n  url: string;\n};\n\nexport interface RelatedUrl {\n  parent: string;\n  links: LinkItem[];\n}\nexport interface NeedToKnowItems {\n  subheader: string;\n  icon: string;\n  header: string;\n}\nexport interface City {\n  name: string;\n  coordinates: {\n    lng: number;\n    lat: number;\n  };\n  id: string;\n}\nexport interface Product {\n  name: string;\n  image: {\n    alt: string;\n    url: string;\n  };\n  slug: string;\n  type: string;\n  duration: number;\n}\nexport interface Trending {\n  name: string;\n  author: string;\n  image: {\n    alternativeText: string;\n    url: string;\n  };\n  publication_date: string;\n  slug: string;\n}\nexport interface ThingsToDO {\n  meta_title: string;\n  created_at: {\n    _seconds: number;\n    _nanoseconds: number;\n  };\n  canonical: string;\n  published: boolean;\n  title: string;\n  og_image: string;\n  og_title: string;\n  meta_description: string;\n  og_description: string;\n  slug: string;\n  faqs: Faq[];\n  related_urls: RelatedUrl[];\n  need_to_know_items: NeedToKnowItems[];\n  need_to_know: string;\n  city: City;\n  products: Product[];\n  trending: Trending[];\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport { EPageType } from '../../types/pages/things-to-do';\nimport { convertMarkdownToHtml } from '../../utils/getHtmlFromMarkdown';\n\ninterface IProps {\n  requirementSection?: {\n    title: string;\n    requirements: string[];\n  };\n  faqSection?: {\n    question: string;\n    answer: string;\n  };\n  index: number;\n  isOpen: boolean;\n  sectionType: string;\n  pageType?: string;\n  toggleSection: () => void;\n}\nconst ContentStyle = styled.div`\n  animation: slowDown 500ms linear forwards;\n  @keyframes slowDown {\n    0% {\n      transform: scaleY(0);\n    }\n    80% {\n      transform: scaleY(1.1);\n    }\n    100% {\n      transform: scaleY(1);\n    }\n  }\n`;\n\nconst FAQs = ({\n  pageType,\n  requirementSection,\n  faqSection,\n  index,\n  isOpen,\n  sectionType,\n  toggleSection\n}: IProps) => {\n  const BorderStyle = styled.div`\n    border-bottom: 1px solid\n      ${pageType === EPageType.THINGS_TODO\n        ? 'gray'\n        : sectionType === 'requirement'\n        ? 'black'\n        : 'white'};\n    margin-bottom: ${isOpen ? '0px' : '2px'};\n    opacity: ${pageType === EPageType.THINGS_TODO ? '0.25' : '1'};\n  `;\n\n  return (\n    <div\n      key={index}\n      className={`xxsm:py-3 sm:py-4 ${\n        pageType === EPageType.THINGS_TODO\n          ? `w-full`\n          : `xl:w-[60%] xxsm:w-[80%] md:w-[70%] px-4`\n      } `}\n    >\n      <div\n        className=\"py-2 flex xxsm:items-start sm:items-center cursor-pointer justify-between\"\n        onClick={() => toggleSection()}\n      >\n        <div\n          className={`flex-1 ${\n            pageType === EPageType.THINGS_TODO\n              ? ' text-black text-base 2xl:text-lg font-medium 2xl:font-semibold leading-snug xxsm:pr-2.5 sm:pr-0'\n              : ' font-semibold xsm:text-[18px] md:text-[22px] xl:text-2xl'\n          }  ${sectionType === 'requirement' ? 'text-black' : 'text-white'}`}\n        >\n          {requirementSection?.title || faqSection?.question}\n        </div>\n        <div className=\"flex items-center\">\n          <div\n            className={`xl:text-2xl xxsm:text-xl md:text-2xl ${\n              sectionType === 'requirement' ? 'text-black' : 'text-white'\n            } transform transition-transform duration-300 ${\n              isOpen ? 'rotate-45' : 'rotate-0'\n            } cursor-pointer`}\n          >\n            +\n          </div>\n        </div>\n      </div>\n      {isOpen && (\n        <ContentStyle\n          className={requirementSection?.title ? 'pt-2 text-xl' : 'py-6'}\n          style={{ color: sectionType === 'requirement' ? 'black' : 'white' }}\n        >\n          <p className=\"xxsm:text-[14px] md:text-[20px]\">\n            {requirementSection?.title}\n            {requirementSection?.title\n              ? 's are expected to have the following requirements:'\n              : ''}\n          </p>\n          {requirementSection?.requirements && (\n            <ul className=\"list-disc pl-10 py-6 xxsm:text-[14px] md:text-[20px]\">\n              {requirementSection?.requirements.map((requirement, i) => (\n                <li className={requirementSection?.title ? 'mb-2' : ''} key={i}>\n                  {requirement}\n                </li>\n              ))}\n            </ul>\n          )}\n          {faqSection?.answer && (\n            <p\n              className={` things-to-do-faq ${\n                pageType === EPageType.THINGS_TODO\n                  ? `text-zinc-700 text-opacity-90 sm:text-sm md:text-base 2xl:text-lg font-normal leading-snug`\n                  : `xxsm:text-[14px] md:text-[20px] leading-10 mb-2`\n              } `}\n              dangerouslySetInnerHTML={{\n                __html: convertMarkdownToHtml(faqSection?.answer)\n              }}\n            ></p>\n          )}\n        </ContentStyle>\n      )}\n      <BorderStyle />\n    </div>\n  );\n};\n\nexport default FAQs;\n","import React, { useState } from 'react';\nimport FAQs from '../../../shared-components/FAQs/FAQs';\nimport { EPageType, Faq } from '../../../types/pages/things-to-do';\n\ninterface IProps {\n  faqs: Faq[];\n}\n\nexport const FaqSection = ({ faqs }: IProps) => {\n  const [openSections, setOpenSections] = useState<{\n    requirement: string | null;\n    faq: string | null;\n  }>({ requirement: null, faq: null });\n\n  const toggleSection = (sectionType: string, index: number) => {\n    setOpenSections((prevOpenSections: any) => ({\n      ...prevOpenSections,\n      [sectionType]:\n        prevOpenSections[sectionType] === String(index) ? null : String(index)\n    }));\n  };\n\n  return (\n    <div className=\"bg-bluishGray py-8\">\n      <div className=\"w-[90%] md:w-[85%] xl:w-[80%] 3xl:w-[70%] mx-auto flex flex-col xxsm:px-2 sm:px-0\">\n        <h1\n          className=\"text-black13 xxsm:text-[22px] sm:text-[26px] xl:text-[32px] font-semibold\ncapitalize leading-9\"\n        >\n          FAQs\n        </h1>\n        <div className=\"w-full h-full flex flex-col xxsm:items-center xsm:mt-[10px] md:mt-[20px]\">\n          {faqs?.length > 0 ? (\n            faqs?.map((section, index) => (\n              <FAQs\n                pageType={EPageType.THINGS_TODO}\n                key={index}\n                faqSection={section}\n                index={index}\n                sectionType={'requirement'}\n                isOpen={openSections.faq === String(index)}\n                toggleSection={() => toggleSection('faq', index)}\n              />\n            ))\n          ) : (\n            <p>No Faqs Available</p>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { useEffect, useState } from 'react';\nimport { EPageType } from '../../types/pages/things-to-do';\nimport { useAuthContext } from '../../utils/context/authContext';\nimport Image from 'next/image';\nimport { useRouter } from 'next/router';\nexport interface TopTip {\n  id: string;\n  text: string;\n  likes: number;\n  dislikes: number;\n  liked?: boolean;\n  disliked?: boolean;\n}\n\nexport interface Top {\n  top_tips: TopTip[];\n}\n\ninterface Iprops {\n  updateTopTip: (\n    id: string,\n    likes: number,\n    dislikes: number,\n    isLikeClick: boolean\n  ) => Promise<void>;\n  setIsModalOpen: (show: boolean) => void;\n  top: Top[];\n  pageType?: EPageType;\n  setShowErrorModal?: React.Dispatch<React.SetStateAction<boolean>>;\n}\ntype myTopTip = {\n  id: string;\n  isLiked: boolean;\n  isDisliked: boolean;\n  likes: number;\n  dislikes: number;\n};\n\nconst TopTips = ({\n  top,\n  setIsModalOpen,\n  updateTopTip,\n  pageType,\n  setShowErrorModal\n}: Iprops) => {\n  const [myTopTips, setMyTopTips] = useState<myTopTip[]>([]);\n  const { user }: any = useAuthContext();\n  const router = useRouter();\n  useEffect(() => {\n    if (myTopTips.length > 0)\n      localStorage.setItem('myTopTips', JSON.stringify(myTopTips));\n  }, [myTopTips]);\n\n  const SetTopTipHandler = (storedTopTips: string) => {\n    try {\n      const parsedTopTips: myTopTip[] = JSON.parse(storedTopTips) as myTopTip[];\n      if (myTopTips.length === 0)\n        setMyTopTips(\n          parsedTopTips.map(ptt => {\n            const foundTT = top[0].top_tips?.find(tt => tt.id == ptt.id);\n            if (foundTT) {\n              return {\n                ...ptt,\n                likes: foundTT.likes,\n                dislikes: foundTT.dislikes\n              };\n            }\n            return {\n              ...ptt\n            };\n          })\n        );\n    } catch (error) {}\n  };\n  useEffect(() => {\n    if (top[0]?.top_tips?.length > 0) {\n      const storedTopTips = localStorage.getItem('myTopTips');\n      if (storedTopTips) {\n        if (user?.emailVerified && pageType === EPageType.THINGS_TODO) {\n          SetTopTipHandler(storedTopTips);\n        } else {\n          SetTopTipHandler(storedTopTips);\n        }\n      }\n    }\n  }, [top[0]]);\n\n  const handleDisLikeClick = (id: string, likes: number, dislikes: number) => {\n    const myToolTip = myTopTips.find(tt => tt.id === id);\n    if (myToolTip) {\n      setMyTopTips(\n        myTopTips.map(mtt => {\n          if (mtt.id === id) {\n            updateTopTip(\n              id,\n              mtt?.isLiked\n                ? mtt.likes === 0\n                  ? mtt.likes\n                  : mtt.likes - 1\n                : mtt.likes,\n              mtt.isDisliked\n                ? mtt.dislikes === 0\n                  ? mtt.dislikes\n                  : mtt.dislikes - 1\n                : mtt.dislikes + 1,\n              false\n            );\n\n            return {\n              ...mtt,\n              isDisliked: mtt.isDisliked ? false : true,\n              dislikes: mtt.isDisliked\n                ? mtt.dislikes === 0\n                  ? mtt.dislikes\n                  : mtt.dislikes - 1\n                : mtt.dislikes + 1,\n              likes: mtt?.isLiked\n                ? mtt.likes === 0\n                  ? mtt.likes\n                  : mtt.likes - 1\n                : mtt.likes,\n              isLiked: false\n            };\n          }\n          return mtt;\n        })\n      );\n    } else {\n      setMyTopTips([\n        ...myTopTips,\n        {\n          id,\n          isLiked: false,\n          isDisliked: true,\n          likes,\n          dislikes: dislikes + 1\n        }\n      ]);\n      updateTopTip(id, likes, dislikes + 1, false);\n    }\n  };\n  const handleLikeClick = async (\n    id: string,\n    likes: number,\n    dislikes: number\n  ) => {\n    const myToolTip = myTopTips.find(tt => tt.id === id);\n    if (myToolTip) {\n      setMyTopTips(\n        myTopTips.map(mtt => {\n          if (mtt.id === id) {\n            updateTopTip(\n              id,\n              mtt.isLiked\n                ? mtt.likes === 0\n                  ? mtt.likes\n                  : mtt.likes - 1\n                : mtt.likes + 1,\n              mtt?.isDisliked\n                ? mtt.dislikes === 0\n                  ? mtt.dislikes\n                  : mtt.dislikes - 1\n                : mtt.dislikes,\n              true\n            );\n            return {\n              ...mtt,\n              isLiked: mtt.isLiked ? false : true,\n              likes: mtt.isLiked\n                ? mtt.likes === 0\n                  ? mtt.likes\n                  : mtt.likes - 1\n                : mtt.likes + 1,\n              dislikes: mtt?.isDisliked\n                ? mtt.dislikes === 0\n                  ? mtt.dislikes\n                  : mtt.dislikes - 1\n                : mtt.dislikes,\n              isDisliked: false\n            };\n          }\n          return mtt;\n        })\n      );\n    } else {\n      setMyTopTips([\n        ...myTopTips,\n        { id, isLiked: true, isDisliked: false, likes: likes + 1, dislikes }\n      ]);\n      updateTopTip(id, likes + 1, dislikes, true);\n    }\n  };\n\n  const handleThingstodoLikeClick = async (\n    id: string,\n    likes: number,\n    dislikes: number\n  ) => {\n    updateTopTip(id, likes + 1, dislikes, true);\n  };\n\n  const handleThingstodoDisLikeClick = async (\n    id: string,\n    likes: number,\n    dislikes: number\n  ) => {\n    updateTopTip(id, likes, dislikes + 1, false);\n  };\n\n  const [showAllTips, setShowAllTips] = useState(false);\n  const [visibleTips, setVisibleTips] = useState(6);\n  const handleSeeMoreClick = () => {\n    setShowAllTips(!showAllTips);\n    setVisibleTips(showAllTips ? 6 : top[0]?.top_tips.length);\n  };\n\n  useEffect(() => {\n    const handleBackButton = () => {\n      localStorage.setItem(\n        'referringPage',\n        `${window.location.origin}${router.asPath}`\n      );\n    };\n\n    window.addEventListener('popstate', handleBackButton);\n\n    return () => {\n      window.removeEventListener('popstate', handleBackButton);\n    };\n  }, []);\n\n  const openModalHandler = () => {\n    if (pageType === EPageType.THINGS_TODO && !user?.emailVerified) {\n      localStorage.setItem('referringPage', window.location.href);\n      setShowErrorModal && setShowErrorModal(true);\n    } else {\n      setIsModalOpen(true);\n    }\n  };\n  const DislikeTipHandler = (id: string, likes: number, dislikes: number) => {\n    if (pageType === EPageType.THINGS_TODO) {\n      if (user?.emailVerified) {\n        handleThingstodoDisLikeClick(id, likes, dislikes);\n      } else {\n        localStorage.setItem('referringPage', window.location.href);\n        setShowErrorModal && setShowErrorModal(true);\n      }\n    } else {\n      handleDisLikeClick(id, likes, dislikes);\n    }\n  };\n  const LikeTipHandler = (id: string, likes: number, dislikes: number) => {\n    if (pageType === EPageType.THINGS_TODO) {\n      if (user?.emailVerified) {\n        handleThingstodoLikeClick(id, likes, dislikes);\n      } else {\n        localStorage.setItem('referringPage', window.location.href);\n        setShowErrorModal && setShowErrorModal(true);\n      }\n    } else {\n      handleLikeClick(id, likes, dislikes);\n    }\n  };\n\n  return (\n    <div className=\"flex-col w-full flex-wrap font-bold gap-4 \">\n      <div\n        className={`${\n          pageType == EPageType.THINGS_TODO ? 'static' : 'sticky'\n        } top-20 flex xxsm:justify-between msm:justify-normal xxsm:gap-0 msm:gap-8 mt-8 mb-3 font-semibold `}\n      >\n        <h2\n          className={`md:pl-0 ${\n            pageType == EPageType.THINGS_TODO\n              ? `xxsm:text-[22px] sm:text-[26px] xl:text-[32px]`\n              : ` text-[20px] xl:text-[24px]`\n          }  font-semibold`}\n        >\n          Top Tips\n        </h2>\n\n        <button\n          onClick={event => {\n            event.stopPropagation();\n            openModalHandler();\n          }}\n          className=\"flex items-center justify-center rounded-full border-gray-200 bg-[#1F2C5B] w-8 h-8 text-white\"\n        >\n          <svg\n            xmlns=\"http://www.w3.org/2000/svg\"\n            width=\"15\"\n            height=\"15\"\n            viewBox=\"0 0 15 15\"\n            fill=\"none\"\n          >\n            <path\n              d=\"M13.9286 8.57143H8.57143V13.9286C8.57143 14.2127 8.45855 14.4853 8.25761 14.6862C8.05668 14.8871 7.78416 15 7.5 15C7.21584 15 6.94332 14.8871 6.74239 14.6862C6.54145 14.4853 6.42857 14.2127 6.42857 13.9286V8.57143H1.07143C0.787268 8.57143 0.514746 8.45855 0.313814 8.25762C0.112883 8.05668 0 7.78416 0 7.5C0 7.21584 0.112883 6.94332 0.313814 6.74239C0.514746 6.54145 0.787268 6.42857 1.07143 6.42857H6.42857V1.07143C6.42857 0.787268 6.54145 0.514746 6.74239 0.313814C6.94332 0.112882 7.21584 0 7.5 0C7.78416 0 8.05668 0.112882 8.25761 0.313814C8.45855 0.514746 8.57143 0.787268 8.57143 1.07143V6.42857H13.9286C14.2127 6.42857 14.4853 6.54145 14.6862 6.74239C14.8871 6.94332 15 7.21584 15 7.5C15 7.78416 14.8871 8.05668 14.6862 8.25762C14.4853 8.45855 14.2127 8.57143 13.9286 8.57143Z\"\n              fill=\"white\"\n            />\n          </svg>\n        </button>\n      </div>\n      <div className=\"\">\n        <div className=\"gap-4 lg:pr-[12px] grid grid-col-1 lg:grid-cols-2\">\n          {top[0]?.top_tips?.length > 0 ? (\n            top[0]?.top_tips?.map((tip, index) => (\n              <div\n                className={`flex xl:h-[75px] flex-col gap-4 py-[24px] px-[15px] align-center rounded-[12px] bg-[#F8FBFF] shadow-md justify-center ${\n                  !showAllTips && index >= visibleTips ? 'hidden' : ''\n                }`}\n                key={tip.id}\n              >\n                <div className=\"flex justify-between gap-1 xsm:gap-4  font-light  \">\n                  <span className=\" text-[14px] msm:text-[16px]\">\n                    {tip.text}\n                  </span>\n                  <div className=\"flex justify-end gap-3 items-center\">\n                    <div className=\"flex gap-1\">\n                      <button\n                        onClick={event => {\n                          LikeTipHandler(tip.id, tip.likes, tip.dislikes);\n                          event.stopPropagation();\n                        }}\n                        className=\"text-green w-[20px] h-[20px]\"\n                      >\n                        {pageType === EPageType.THINGS_TODO ? (\n                          tip.liked ? (\n                            <Image\n                              src=\"/like_selected.svg\"\n                              width={20}\n                              height={20}\n                              alt=\"like\"\n                              className=\"w-[20px] h-[20px]\"\n                            />\n                          ) : (\n                            <Image\n                              src=\"/like_unselected.svg\"\n                              width={20}\n                              height={20}\n                              alt=\"like\"\n                              className=\"w-[20px] h-[20px]\"\n                            />\n                          )\n                        ) : myTopTips.find(mtt => mtt.id === tip.id)\n                            ?.isLiked ? (\n                          <Image\n                            src=\"/like_selected.svg\"\n                            width={20}\n                            height={20}\n                            alt=\"like\"\n                            className=\"w-[20px] h-[20px]\"\n                          />\n                        ) : (\n                          <Image\n                            src=\"/like_unselected.svg\"\n                            width={20}\n                            height={20}\n                            alt=\"like\"\n                            className=\"w-[20px] h-[20px]\"\n                          />\n                        )}\n                      </button>\n                      {pageType === EPageType.THINGS_TODO ? (\n                        <span>{tip.likes ?? tip.likes}</span>\n                      ) : (\n                        <span>\n                          {myTopTips.find(mtt => mtt.id === tip.id)?.likes ??\n                            tip.likes}\n                        </span>\n                      )}{' '}\n                    </div>\n                    <div className=\"flex gap-1\">\n                      <button\n                        className=\"text-red-300 w-[20px] h-[20px]\"\n                        onClick={event => {\n                          DislikeTipHandler(tip.id, tip.likes, tip.dislikes);\n                          event.stopPropagation();\n                        }}\n                      >\n                        {pageType === EPageType.THINGS_TODO ? (\n                          tip.disliked ? (\n                            <Image\n                              src=\"/dislike_selected.svg\"\n                              width={20}\n                              height={20}\n                              alt=\"dislike\"\n                              className=\"w-[20px] h-[20px]\"\n                            />\n                          ) : (\n                            <Image\n                              src=\"/dislike_unselected.svg\"\n                              width={20}\n                              height={20}\n                              alt=\"dislike\"\n                              className=\"w-[20px] h-[20px]\"\n                            />\n                          )\n                        ) : myTopTips.find(mtt => mtt.id === tip.id)\n                            ?.isDisliked ? (\n                          <Image\n                            src=\"/dislike_selected.svg\"\n                            width={20}\n                            height={20}\n                            alt=\"dislike\"\n                            className=\"w-[20px] h-[20px]\"\n                          />\n                        ) : (\n                          <Image\n                            src=\"/dislike_unselected.svg\"\n                            width={20}\n                            height={20}\n                            alt=\"dislike\"\n                            className=\"w-[20px] h-[20px]\"\n                          />\n                        )}\n                      </button>\n                      {pageType === EPageType.THINGS_TODO ? (\n                        <span>{tip.dislikes ?? tip.dislikes}</span>\n                      ) : (\n                        <span>\n                          {myTopTips.find(mtt => mtt.id === tip.id)?.dislikes ??\n                            tip.dislikes}\n                        </span>\n                      )}\n                    </div>\n                  </div>\n                </div>\n              </div>\n            ))\n          ) : (\n            <div id=\"top-tips\" className=\"mt-5 text-base font-medium\">\n              <h2>\n                Looks like there are no tips. Be the first one to add a tip to\n                help people enjoy!{' '}\n              </h2>\n            </div>\n          )}\n        </div>\n      </div>\n      <div\n        className={`${\n          top[0]?.top_tips?.length < 6 ? 'py-5' : 'py-8 md:py-10'\n        } ${\n          pageType !== EPageType.THINGS_TODO && 'border-b border-b-[#E6E6E6]'\n        }  mr-[12px]`}\n      >\n        {top[0]?.top_tips?.length > 6 && (\n          <button\n            onClick={handleSeeMoreClick}\n            className=\"text-base font-semibold float-right\"\n          >\n            {showAllTips ? 'Show Less' : 'See More'}\n          </button>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default TopTips;\n","import React, {\n  Dispatch,\n  SetStateAction,\n  useEffect,\n  useRef,\n  useState\n} from 'react';\ninterface TopTip {\n  id: string;\n  text: string;\n  likes: number;\n  dislikes: number;\n}\n\ninterface Top {\n  top_tips: TopTip[];\n}\ninterface Iroprs {\n  setIsModalOpen: (open: boolean) => void;\n  top: Top[];\n  toptipText: string;\n  setToptipText: Dispatch<SetStateAction<string>>;\n  handleSubmit: () => Promise<void>;\n  pageType?: string; //for temporary disable submit button on things-todo page\n}\n\nconst AddTopTipModal = ({\n  setIsModalOpen,\n  pageType,\n  toptipText,\n  setToptipText,\n  handleSubmit\n}: Iroprs) => {\n  const [isButtonDisabled, setIsButtonDisabled] = useState(true);\n  const [errorMessage, setErrorMessage] = useState('');\n\n  const handleToptipChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n    const newText = e.target.value;\n\n    if (newText.trim() === '') {\n      setToptipText('');\n      setErrorMessage('Top tip cannot be empty.');\n    } else {\n      // Check if the new text contains more than 3 consecutive spaces\n      if (/\\s{3,}/.test(newText)) {\n        setToptipText(toptipText);\n        setErrorMessage('Only up to 3 consecutive spaces are allowed.');\n      } else {\n        if (newText.length >= 1 && newText.length < 50) {\n          setIsButtonDisabled(true);\n          setErrorMessage('Minimum length should be 50 characters.');\n        } else if (newText.length >= 100) {\n          setErrorMessage('Maximum length cannot be more than 100 characters.');\n        } else {\n          setIsButtonDisabled(false);\n          setErrorMessage('');\n        }\n        setToptipText(newText);\n      }\n    }\n  };\n\n  const modalRef: any = useRef(null);\n\n  const handleCloseModal = (e: any) => {\n    if (modalRef.current && !modalRef.current.contains(e.target)) {\n      setIsModalOpen(false);\n    }\n  };\n\n  useEffect(() => {\n    document.addEventListener('mousedown', handleCloseModal);\n    return () => {\n      document.removeEventListener('mousedown', handleCloseModal);\n    };\n  }, []);\n\n  return (\n    <>\n      {/* Modal Wrapper z-index should be 1150 or in between 1100 and 1200 */}\n      <div className=\"fixed inset-0  z-[1150] bg-gray-800 bg-opacity-50 flex items-center justify-center\">\n        <div\n          ref={modalRef}\n          className=\"bg-white rounded-md w-[90%] md:w-[530px]\"\n        >\n          <div className=\" m-2 flex justify-end\">\n            <span\n              className=\"cursor-pointer px-2 py-1\"\n              onClick={() => setIsModalOpen(false)}\n            >\n              <svg\n                width=\"21\"\n                height=\"21\"\n                viewBox=\"0 0 21 21\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n              >\n                <rect\n                  x=\"0.398438\"\n                  y=\"0.5\"\n                  width=\"20.5989\"\n                  height=\"20\"\n                  rx=\"10\"\n                  fill=\"#DEDEDE\"\n                />\n                <path\n                  d=\"M14.7681 7.51358C14.8398 7.44442 14.897 7.36169 14.9363 7.27021C14.9757 7.17872 14.9964 7.08032 14.9973 6.98074C14.9982 6.88115 14.9793 6.78238 14.9416 6.69019C14.904 6.598 14.8483 6.51424 14.7779 6.44379C14.7076 6.37333 14.6238 6.31761 14.5317 6.27985C14.4395 6.2421 14.3408 6.22307 14.2412 6.22389C14.1416 6.22471 14.0432 6.24535 13.9517 6.28462C13.8602 6.32388 13.7774 6.38098 13.7081 6.45258L10.7021 9.45758L7.69715 6.45258C7.62848 6.37889 7.54568 6.31979 7.45368 6.27879C7.36168 6.2378 7.26237 6.21576 7.16167 6.21398C7.06097 6.21221 6.96094 6.23073 6.86755 6.26845C6.77416 6.30617 6.68933 6.36232 6.61811 6.43354C6.54689 6.50476 6.49074 6.58959 6.45302 6.68298C6.4153 6.77637 6.39678 6.8764 6.39855 6.9771C6.40033 7.0778 6.42237 7.17711 6.46336 7.26911C6.50436 7.36111 6.56346 7.44391 6.63715 7.51258L9.64015 10.5186L6.63515 13.5236C6.50267 13.6658 6.43054 13.8538 6.43397 14.0481C6.4374 14.2424 6.51611 14.4278 6.65352 14.5652C6.79094 14.7026 6.97632 14.7813 7.17062 14.7847C7.36492 14.7882 7.55297 14.7161 7.69515 14.5836L10.7021 11.5786L13.7071 14.5846C13.8493 14.7171 14.0374 14.7892 14.2317 14.7858C14.426 14.7823 14.6114 14.7036 14.7488 14.5662C14.8862 14.4288 14.9649 14.2434 14.9683 14.0491C14.9717 13.8548 14.8996 13.6667 14.7671 13.5246L11.7641 10.5186L14.7681 7.51358Z\"\n                  fill=\"black\"\n                />\n              </svg>\n            </span>\n          </div>\n          <div className=\" px-6 md:px-8 pb-4\">\n            <h2 className=\"text-lg mb-4\">Share your Top Tip</h2>\n\n            <form>\n              <textarea\n                value={toptipText}\n                onChange={handleToptipChange}\n                placeholder=\"Write Top Tip\"\n                rows={4}\n                minLength={50}\n                maxLength={100}\n                required\n                className=\"w-full p-2 mb-1\"\n                style={{\n                  borderRadius: '15px',\n                  border: '1px solid #DFDFDF',\n                  background: '#EEE'\n                }}\n              />\n              <div className=\"flex justify-between mb-5\">\n                <div className=\"justify-start\">\n                  {errorMessage && (\n                    <p className=\"text-blue-500 text-sm\">{errorMessage}</p>\n                  )}\n                </div>\n                {toptipText.length > 0 && (\n                  <p className=\"flex justify-end \">{`${toptipText.length}/100`}</p>\n                )}\n              </div>\n              <div className=\"flex justify-end\">\n                <button\n                  type=\"button\"\n                  onClick={handleSubmit}\n                  className={`bg-[#1F2C5B] text-white px-4 py-2 rounded-[8px] hover:bg-[#2E3D7A] active:bg-[#2E3D7A] ${\n                    isButtonDisabled && 'opacity-50 cursor-not-allowed'\n                  }`}\n                  disabled={isButtonDisabled}\n                >\n                  Submit\n                </button>\n              </div>\n            </form>\n          </div>\n        </div>\n      </div>\n    </>\n  );\n};\n\nexport default AddTopTipModal;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport TopTips, { Top, TopTip } from '../../Attraction/topTip';\nimport { EPageType } from '../../../types/pages/things-to-do';\nimport AddTopTipModal from '../../Attraction/AddTopTipModal';\nimport axios from 'axios';\nimport { toast } from 'react-toastify';\nimport { useAuthContext } from '../../../utils/context/authContext';\nimport NotificationModal, {\n  EModalType\n} from '../../../shared-components/NotificationModal/NotificationModal';\nimport { useRouter } from 'next/router';\n\ninterface AttractionTopTipsProps {\n  topTips: TopTip[];\n}\n\nexport const AttractionTopTips = ({ topTips }: AttractionTopTipsProps) => {\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [showErrorModal, setShowErrorModal] = useState(false);\n  const [toptipText, setToptipText] = useState<string>('');\n  const [top, setTop] = useState<Top[]>([]);\n  const [citySlug, setCitySlug] = useState<string>('');\n  const { user }: any = useAuthContext();\n  useEffect(() => {\n    const allTops = [{ top_tips: topTips }];\n    setTop(allTops);\n  }, [topTips]);\n  const router = useRouter();\n\n  useEffect(() => {\n    if (typeof window !== undefined) {\n      const currentURL = window.location.href;\n      const parts = currentURL.split('/');\n      setCitySlug(parts[parts.length - 1]);\n    }\n  }, [topTips]);\n\n  const toggleModal = useCallback(() => {\n    setShowErrorModal(!showErrorModal);\n  }, [showErrorModal]);\n\n  const updateTopTip = async (\n    id: string,\n    likes: number,\n    dislikes: number,\n    isLikeClick: boolean\n  ) => {\n    const url = isLikeClick\n      ? `${process.env.NEXT_PUBLIC_FIREBASE_CONNECTION}/like-top-tip/${id}`\n      : `${process.env.NEXT_PUBLIC_FIREBASE_CONNECTION}/dislike-top-tip/${id}`;\n    const token = await getCurrentToken();\n    const data = {\n      slug: citySlug\n    };\n    const headers = {\n      Authorization: token,\n      'Content-Type': 'application/json'\n    };\n    try {\n      const response = await axios.put(url, data, { headers });\n      if (isLikeClick) {\n        setTop(prevTop => {\n          const newTop = prevTop.map(top => {\n            return {\n              ...top,\n              top_tips: top.top_tips.map(tip =>\n                tip.id == id\n                  ? {\n                      ...tip,\n                      likes: response.data.tip.likes,\n                      dislikes: response.data.tip.dislikes,\n                      liked: !tip.liked,\n                      disliked: tip.disliked ? !tip.disliked : tip.disliked\n                    }\n                  : tip\n              )\n            };\n          });\n          return newTop;\n        });\n      } else {\n        setTop(prevTop => {\n          const newTop = prevTop.map(top => {\n            return {\n              ...top,\n              top_tips: top.top_tips.map(tip =>\n                tip.id == id\n                  ? {\n                      ...tip,\n                      likes: response.data.tip.likes,\n                      dislikes: response.data.tip.dislikes,\n                      liked: tip.liked ? !tip.liked : tip.liked,\n                      disliked: !tip.disliked\n                    }\n                  : tip\n              )\n            };\n          });\n          return newTop;\n        });\n      }\n    } catch (error) {\n      console.error('Error updating top tip:', error);\n    }\n  };\n\n  const getCurrentToken = async () => {\n    try {\n      if (user) {\n        const idToken = await user.getIdToken();\n        return idToken;\n      } else {\n        return null;\n      }\n    } catch (error) {\n      console.error('Error fetching ID token:', error);\n      return null;\n    }\n  };\n  const handleSubmit = async () => {\n    const url = `${process.env.NEXT_PUBLIC_FIREBASE_CONNECTION}/add-top-tip/${citySlug}`;\n    const token = await getCurrentToken();\n    const data = {\n      tip: toptipText\n    };\n    const headers = {\n      Authorization: token,\n      'Content-Type': 'application/json'\n    };\n    try {\n      const response = await axios.post(url, data, { headers });\n      const updatedTopTip = response.data;\n      const newTopTip = {\n        id: updatedTopTip.id,\n        text: updatedTopTip.text,\n        likes: 0,\n        dislikes: 0\n      };\n      toast.success('Tip added successfully');\n      setTop(prevTop => {\n        const updatedTop = {\n          ...prevTop[0],\n          top_tips: [newTopTip, ...prevTop[0].top_tips]\n        };\n        return [updatedTop, ...prevTop.slice(1)];\n      });\n      setIsModalOpen(false);\n      setToptipText('');\n    } catch (axiosError: any) {\n      if (\n        axiosError.response &&\n        axiosError.response.data &&\n        axiosError.response.data.error\n      ) {\n        const firebaseError = axiosError.response.data.error;\n\n        if (\n          firebaseError.includes(\n            'Firebase ID token has expired. Get a fresh ID token from your client app and try'\n          )\n        ) {\n          toast.error(\n            'Firebase ID token has expired. Please refresh the token.'\n          );\n        }\n      } else {\n        if (axiosError.response.data.message)\n          toast.error(axiosError.response.data.message);\n      }\n      setIsModalOpen(false);\n      setToptipText('');\n    }\n  };\n  return (\n    <div className=\"w-[90%] md:w-[85%] xl:w-[80%] 3xl:w-[70%] mx-auto flex flex-col\">\n      <TopTips\n        setIsModalOpen={setIsModalOpen}\n        top={top}\n        updateTopTip={updateTopTip}\n        pageType={EPageType.THINGS_TODO}\n        setShowErrorModal={setShowErrorModal}\n      />\n      {isModalOpen && (\n        <AddTopTipModal\n          top={top}\n          toptipText={toptipText}\n          setToptipText={setToptipText}\n          handleSubmit={handleSubmit}\n          setIsModalOpen={setIsModalOpen}\n          pageType={EPageType.THINGS_TODO}\n        />\n      )}\n      {showErrorModal && (\n        <NotificationModal\n          toggleModal={toggleModal}\n          modalType={EModalType.ERROR}\n          message=\"To access this feature, please log in to your account first.\"\n          buttonText=\"Sign in\"\n          buttonHandler={() => router.push('/signin')}\n        />\n      )}\n    </div>\n  );\n};\n","import React, { useEffect } from 'react';\nimport Breadcrumb from '../../../shared-components/Breadcrumb/Breadcrumb';\nimport { ThingsToDo } from '../ThingsToDo';\nimport { useRouter } from 'next/router';\n\ninterface IProps {\n  cityName: string | undefined;\n  citySlug: string | undefined;\n}\n\nexport const Header = ({ cityName, citySlug }: IProps) => {\n  const breadcrumbLinks = [\n    { title: 'Home', hrefLink: '/' },\n    {\n      title: cityName ? cityName : 'City',\n      hrefLink: `${citySlug ? `/${citySlug}` : `/`}`\n    },\n    {\n      title: `Things to do in ${cityName}`,\n      hrefLink: `${citySlug ? `/${citySlug}/things-to-do-in-${citySlug}` : `/`}`\n    }\n  ];\n  return (\n    <div className=\"flex flex-col gap-3 py-6 sm:py-10 mx-5 items-start sm:items-center\">\n      <h1 className=\"font-semibold text-[22px] leading-7 sm:text-[28px] sm:leading-9 xl:text-4xl xl:leading-10\">\n        Things to do in {cityName}\n      </h1>\n      <Breadcrumb\n        breadcrumbLinks={breadcrumbLinks}\n        activeLinkColor=\"darkBlue\"\n      />\n    </div>\n  );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Map } from '../Map/Map';\nimport Image from 'next/image';\nimport { LoadingSpinner } from '../../../shared-components/LoadingSpinner/LoadingSpinner';\nimport Pagination from '../../../shared-components/Pagination/Pagination';\nimport { AttractionTopTips } from '../AttractionTopTips/AttractionTopTips';\nimport { FaqSection } from '../FaqSection/FaqSection';\nimport { RelatedBreadcrumbLinks } from '../RelatedBreadcrumbLinks/RelatedBreadcrumbLinks';\nimport Footer from '../../../layouts/Footer/footer';\nimport Newsletter from '../../../layouts/Newsletter/Newsletter';\nimport {\n  EAttractionCardPageType,\n  ThingsTodoMobileProps\n} from '../../../types/components/attraction-card';\nimport scrollToElement from '../../../utils/scrollIntoView';\nimport { ToastContainer } from 'react-toastify';\nimport AttractionCard from '../../../shared-components/AttractionCard/AttractionCard';\n\nexport const MobileView = ({\n  attractionData,\n  setAttractionData,\n  thingsToDoDetails,\n  showFullMap,\n  topTips,\n  radius,\n  setRadius,\n  mapRef,\n  paginatedAttractionData,\n  currentPage,\n  attractionsPerPage,\n  handlePageChange\n}: ThingsTodoMobileProps) => {\n  const [expanded, setExpanded] = useState(false);\n  const [showMapButton, setShowMapButton] = useState(false);\n  const [attractionCardsVisible, setAttractionsCardsVisible] = useState(false);\n\n  // Hide Show Map Button when we are out of attractions Div\n  useEffect(() => {\n    const handleScroll = () => {\n      const attractionsSection = document.getElementById('attractions-card');\n\n      if (attractionsSection) {\n        const rect = attractionsSection.getBoundingClientRect();\n\n        if (paginatedAttractionData.length == 1 && rect.bottom <= 574) {\n          setShowMapButton(false);\n        } else if (\n          (paginatedAttractionData.length == 0 ||\n            paginatedAttractionData.length == 1) &&\n          rect.bottom > 400\n        ) {\n          setShowMapButton(true);\n        } else {\n          const isInView = rect.bottom > window.innerHeight;\n\n          setAttractionsCardsVisible(isInView);\n          setShowMapButton(isInView);\n        }\n      }\n    };\n\n    const sliderDiv = document.getElementById('sliderDiv');\n    if (sliderDiv) {\n      sliderDiv.addEventListener('scroll', handleScroll);\n      return () => {\n        sliderDiv.removeEventListener('scroll', handleScroll);\n      };\n    }\n  }, [expanded]);\n\n  useEffect(() => {\n    if (!expanded) {\n      scrollToElement('attractions-card');\n    }\n  }, [attractionData]);\n\n  // For Slideup/SlideDown mobile Attractions Card\n  const toggleExpand = () => {\n    setExpanded(prevExpanded => !prevExpanded);\n    setShowMapButton(attractionCardsVisible);\n  };\n\n  const totalPages =\n    (attractionData && Math.ceil(attractionData.length / attractionsPerPage)) ||\n    0;\n\n  useEffect(() => {\n    scrollToElement('attractions-card');\n  }, [currentPage]);\n\n  return (\n    <div className=\"flex flex-col relative h-[calc(100vh-180px)]\">\n      <Map\n        attractionData={attractionData}\n        setAttractionData={setAttractionData}\n        thingsToDoDetails={thingsToDoDetails}\n        showFullMap={showFullMap}\n        radius={radius}\n        setRadius={setRadius}\n        mapRef={mapRef}\n        pageType={EAttractionCardPageType.THINGS_TODO_PAGE}\n      />\n\n      <div\n        className={`bg-white rounded-tl-[33px] rounded-tr-[33px] flex flex-col items-center w-full fixed z-[1000] transition-all duration-500 ease-in-out touch-pan-up ${\n          expanded ? 'h-[calc(100vh-180px)] bottom-0' : 'h-[85px] bottom-[80px]'\n        }`}\n      >\n        <p\n          className={`text-base leading-7 font-normal py-5 flex flex-col gap-3 items-center `}\n          onTouchStart={toggleExpand}\n        >\n          <div\n            className={`${\n              expanded ? `h-1.5` : `h-1.5`\n            } w-[105px] bg-black13 opacity-[0.6] rounded-full`}\n            onClick={toggleExpand}\n          ></div>\n\n          {attractionData ? (\n            <p>{`Over ${attractionData.length} Attraction${\n              attractionData?.length == 1 ? '' : 's'\n            } within map area`}</p>\n          ) : (\n            <div className=\"h-3 w-32 bg-gray-300 rounded-full animate-pulse mt-2\"></div>\n          )}\n        </p>\n        <div\n          className=\"grid grid-cols-1 gap-[18px] h-[1050px] overflow-y-scroll no-scrollbar\"\n          id=\"sliderDiv\"\n        >\n          <div id=\"attractions-card\">\n            {attractionData === undefined ? (\n              <div className=\"flex items-center justify-center h-[550px] flex-col gap-10\">\n                <LoadingSpinner className=\"w-8 h-8\" />\n              </div>\n            ) : paginatedAttractionData.length === 0 ? (\n              <div\n                className=\"flex items-center justify-center xxsm:h-[350px] sm:h-[550px] flex-col gap-10 px-10 xxsm:mt-10 sm:mt-0\"\n                id=\"attractions-card\"\n              >\n                <Image\n                  src=\"https://res.cloudinary.com/see-sight-tours/image/upload/v1709532363/Remaining%20images/Attraction/ekhp3i11sp3dsr7e2poi.png\"\n                  alt=\"no-attractions-image\"\n                  width={300}\n                  height={300}\n                  className=\"xxsm:w-[70%] sm:w-full\"\n                />\n                <p className=\"text-base font-normal text-center\">\n                  Currently no attractions available\n                </p>\n              </div>\n            ) : (\n              <div className=\"grid grid-cols-1  mmsm:grid-cols-2 xl:grid-cols-3 gap-[18px] xxsm:px-8  xsm:px-11 msm:px-6\">\n                {paginatedAttractionData.map((cardDetails, index) => (\n                  <AttractionCard\n                    attractionCard={cardDetails}\n                    key={cardDetails.id}\n                    index={(currentPage - 1) * attractionsPerPage + index + 1}\n                    isMapCard={false}\n                    pageType={EAttractionCardPageType.THINGS_TODO_PAGE}\n                  />\n                ))}\n              </div>\n            )}\n\n            {expanded && showMapButton && (\n              <div\n                className={`absolute ${\n                  paginatedAttractionData.length > 1\n                    ? `bottom-24`\n                    : paginatedAttractionData.length == 1\n                    ? `bottom-[9rem] msm:bottom-[20rem] z-0`\n                    : `top-24`\n                } left-1/2 transform -translate-x-1/2 transition-all duration-500 ease-in-out`}\n              >\n                <button\n                  className={` ${\n                    paginatedAttractionData.length == 0\n                      ? `bg-[#ffeaed] xxsm:border xxsm:border-[#222]  xxsm:text-[#222]`\n                      : `bg-[#222] text-white`\n                  }    text-base leadin-[18px] px-5 py-2.5 rounded-full flex items-center h-[42px]`}\n                  onClick={toggleExpand}\n                >\n                  {paginatedAttractionData.length === 0 ? (\n                    <Image\n                      src=\"/red-show-map-icon.svg\"\n                      alt=\"map-icon\"\n                      width={18}\n                      height={18}\n                      className=\"mr-2\"\n                    />\n                  ) : (\n                    <Image\n                      src=\"/map-icon.svg\"\n                      alt=\"map-icon\"\n                      width={18}\n                      height={18}\n                      className=\"mr-2\"\n                    />\n                  )}\n                  Show Map\n                </button>\n              </div>\n            )}\n            {totalPages > 1 && expanded && (\n              <Pagination\n                totalPages={totalPages}\n                currentPage={currentPage}\n                handlePageChange={page => handlePageChange(page)}\n              />\n            )}\n          </div>\n          <div\n            className={`flex flex-col gap-8 ${\n              totalPages > 1 ? 'mt-0' : 'mt-6'\n            } z-10 bg-white`}\n          >\n            {/* <TrendingIdeas trending={thingsToDoDetails?.trending} /> */}\n\n            {/* {thingsToDoDetails.products && (\n              <TopTours thingsToDoDetails={thingsToDoDetails} />\n            )} */}\n\n            {/* <NeedToKnow\n              description={thingsToDoDetails.need_to_know}\n              cardItems={thingsToDoDetails.need_to_know_items}\n            /> */}\n            {topTips && <AttractionTopTips topTips={topTips} />}\n\n            {thingsToDoDetails.faqs && (\n              <FaqSection faqs={thingsToDoDetails.faqs} />\n            )}\n\n            {thingsToDoDetails.related_urls && (\n              <RelatedBreadcrumbLinks\n                breadcrumbs={thingsToDoDetails.related_urls}\n              />\n            )}\n\n            <Newsletter />\n\n            <Footer />\n\n            <ToastContainer\n              position=\"bottom-right\"\n              autoClose={5000}\n              hideProgressBar={false}\n              newestOnTop={false}\n              closeOnClick\n              rtl={false}\n              pauseOnFocusLoss\n              draggable\n              pauseOnHover\n              limit={1}\n            />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","//import React from 'react';\nimport { FaqSection } from './FaqSection/FaqSection';\nimport Newsletter from '../../layouts/Newsletter/Newsletter';\nimport { RelatedBreadcrumbLinks } from './RelatedBreadcrumbLinks/RelatedBreadcrumbLinks';\nimport { AttractionTopTips } from './AttractionTopTips/AttractionTopTips';\nimport { useEffect, useRef, useState } from 'react';\nimport { ThingsToDO } from '../../types/pages/things-to-do';\nimport { TopTip } from '../Attraction/topTip';\nimport Image from 'next/image';\nimport { LoadingSpinner } from '../../shared-components/LoadingSpinner/LoadingSpinner';\nimport { Header } from './Header/Header';\nimport { useMediaQuery } from '../../hooks/mediaQuery';\nimport { MobileView } from './MobileView/MobileView';\nimport { Map } from './Map/Map';\nimport {\n  AttractionCardType,\n  EAttractionCardPageType,\n  ESectionInView\n} from '../../types/components/attraction-card';\nimport Pagination from '../../shared-components/Pagination/Pagination';\nimport scrollToElement from '../../utils/scrollIntoView';\nimport { useRouter } from 'next/router';\nimport AttractionCard from '../../shared-components/AttractionCard/AttractionCard';\n\ninterface ThingsToDoProps {\n  thingsToDoDetails: ThingsToDO;\n  topTips: TopTip[];\n}\n\nexport const ThingsToDo = ({ thingsToDoDetails, topTips }: ThingsToDoProps) => {\n  const isMobileView = useMediaQuery(639);\n  const [citySlug, setCitySlug] = useState('');\n  const [zoomLevel, setZoomLevel] = useState(13);\n  const [attractionData, setAttractionData] = useState<AttractionCardType[]>();\n  const [showFullMap, setShowFullMap] = useState(false);\n  const [radius, setRadius] = useState<number>(5);\n  const [inViewSection, setInViewSection] = useState<ESectionInView>(\n    ESectionInView.LIST\n  );\n  const [currentPage, setCurrentPage] = useState(1);\n  const [paginatedAttractionData, setPaginatedAttractionData] = useState<\n    AttractionCardType[]\n  >([]);\n  const [hoveredAttractionId, setHoveredAttractionId] = useState<string>('');\n  const attractionDivRef = useRef<HTMLDivElement>(null);\n\n  const handleMouseEnter = (attractionId: string) => {\n    setHoveredAttractionId(attractionId);\n  };\n  const handleMouseLeave = () => {\n    setHoveredAttractionId('');\n  };\n  const mapRef: any = useRef(null);\n\n  const itemsPerPage = 18;\n\n  useEffect(() => {\n    setCurrentPage(1);\n  }, [zoomLevel]);\n\n  const router = useRouter();\n  const { slug } = router.query;\n\n  useEffect(() => {\n    if (slug) setCitySlug(slug as string);\n  }, [slug as string]);\n\n  const toggleSection = () => {\n    if (ESectionInView.LIST === inViewSection) {\n      setInViewSection(ESectionInView.MAP);\n      setTimeout(() => {\n        mapRef.current.invalidateSize();\n      }, 0);\n    } else {\n      setInViewSection(ESectionInView.LIST);\n    }\n  };\n\n  // Get Paginated Attractions Data based on zoom in zoom out\n  useEffect(() => {\n    const getSlicedAttractionData = () => {\n      const startIndex = (currentPage - 1) * itemsPerPage;\n      const endIndex = startIndex + itemsPerPage;\n      return attractionData?.slice(startIndex, endIndex);\n    };\n\n    setPaginatedAttractionData(getSlicedAttractionData() || []);\n  }, [attractionData, currentPage]);\n\n  const totalPages =\n    (attractionData && Math.ceil(attractionData.length / itemsPerPage)) || 0;\n\n  const handlePageChange = (page: number) => {\n    setCurrentPage(page);\n  };\n\n  useEffect(() => {\n    if (!isMobileView) {\n      scrollToElement('attractions-card');\n      window.scrollTo({ top: 0, behavior: 'smooth' });\n      if (attractionDivRef.current) {\n        attractionDivRef.current.scrollTop = 0;\n      }\n    }\n  }, [currentPage, inViewSection]);\n\n  return (\n    <div className=\"h-full\">\n      <Header\n        citySlug={citySlug as string}\n        cityName={thingsToDoDetails?.city?.name}\n      />\n\n      {isMobileView ? (\n        <MobileView\n          attractionData={attractionData}\n          setAttractionData={setAttractionData}\n          showFullMap={true}\n          thingsToDoDetails={thingsToDoDetails}\n          topTips={topTips}\n          setRadius={setRadius}\n          radius={radius}\n          mapRef={mapRef}\n          paginatedAttractionData={paginatedAttractionData}\n          currentPage={currentPage}\n          attractionsPerPage={itemsPerPage}\n          handlePageChange={handlePageChange}\n        />\n      ) : (\n        <>\n          <div className=\"flex flex-col sm:gap-[45px] xl:gap-[90px] xxsm:hidden sm:flex pb-20\">\n            <div\n              className={`bg-bluishGray flex ${\n                inViewSection === ESectionInView.LIST && !showFullMap\n                  ? totalPages > 1\n                    ? `pb-[55px]`\n                    : `pb-14 sm:pb-14 mlg:pb-[98px]`\n                  : showFullMap\n                  ? 'pb-0'\n                  : 'pb-0'\n              }\n                relative`}\n            >\n              <div\n                className={`${\n                  showFullMap\n                    ? 'hidden'\n                    : inViewSection == ESectionInView.LIST\n                    ? 'w-full sm:w-full flex flex-col mlg:w-[55%] xl:w-[62%] 3xl:w-[55%]'\n                    : 'sm:hidden mlg:flex mlg:w-[55%] xl:w-[62%] 3xl:w-[55%]'\n                } `}\n              >\n                <div className=\"w-full\">\n                  {attractionData !== undefined && (\n                    <p className=\"text-lg leading-7 font-normal py-11  sm:px-8 md:px-16 mlg:px-7 3xl:px-14\">\n                      {`Almost ${attractionData?.length} Attraction${\n                        attractionData?.length == 1 ? '' : 's'\n                      } within map area`}\n                    </p>\n                  )}\n                  <div\n                    className=\"thin-scrollbar overflow-y-scroll transition-all h-[750px]\"\n                    id=\"attractions-card\"\n                    ref={attractionDivRef} // Reference to the scrollable div\n                  >\n                    {attractionData === undefined ? (\n                      <div className=\"flex items-center justify-center h-[550px] flex-col gap-10\">\n                        <LoadingSpinner className=\"w-8 h-8\" />\n                      </div>\n                    ) : paginatedAttractionData.length === 0 ? (\n                      <div className=\"flex items-center justify-center h-[550px] flex-col gap-10\">\n                        <Image\n                          src=\"https://res.cloudinary.com/see-sight-tours/image/upload/v1709532363/Remaining%20images/Attraction/ekhp3i11sp3dsr7e2poi.png\"\n                          alt=\"no-attractions-image\"\n                          width={300}\n                          height={300}\n                        />\n                        <p className=\"text-base font-normal\">\n                          Currently no attractions available\n                        </p>\n                      </div>\n                    ) : (\n                      <div\n                        className={`grid grid-cols-1 sm:grid-cols-2 md:grid-cols-2 mmd:grid-cols-3 lg:grid-cols-3 mlg:grid-cols-2 xl:grid-cols-3 gap-[18px] sm:px-8 md:px-12 mlg:pr-7 xl:pr-4 3xl:px-10 3xl:pr-5\n                  `}\n                      >\n                        {paginatedAttractionData.map((cardDetails, index) => (\n                          <div\n                            key={index}\n                            onMouseEnter={() =>\n                              handleMouseEnter(cardDetails.id)\n                            }\n                            onMouseLeave={handleMouseLeave}\n                          >\n                            <AttractionCard\n                              attractionCard={cardDetails}\n                              key={cardDetails.id}\n                              index={\n                                (currentPage - 1) * itemsPerPage + index + 1\n                              }\n                              isMapCard={false}\n                              pageType={\n                                EAttractionCardPageType.THINGS_TODO_PAGE\n                              }\n                            />\n                          </div>\n                        ))}\n                      </div>\n                    )}\n                  </div>\n                  {totalPages > 1 && (\n                    <Pagination\n                      totalPages={totalPages}\n                      currentPage={currentPage}\n                      handlePageChange={page => handlePageChange(page)}\n                    />\n                  )}\n                </div>\n              </div>\n              <Map\n                hoveredAttractionId={hoveredAttractionId}\n                attractionData={attractionData}\n                setAttractionData={setAttractionData}\n                showFullMap={showFullMap}\n                setShowFullMap={setShowFullMap}\n                thingsToDoDetails={thingsToDoDetails}\n                setRadius={setRadius}\n                radius={radius}\n                sectionInView={inViewSection}\n                mapRef={mapRef}\n                pageType={EAttractionCardPageType.THINGS_TODO_PAGE}\n              />\n\n              <div\n                className={`absolute z-[999] sm:flex ${\n                  inViewSection === ESectionInView.LIST\n                    ? paginatedAttractionData.length === 0\n                      ? `sm:top-[37rem]`\n                      : `sm:top-[50rem]`\n                    : `sm:bottom-0 sm:mb-[6rem]`\n                }  mlg:hidden left-1/2 transform -translate-x-1/2 transition-all duration-500 ease-in-out`}\n              >\n                <button\n                  className={` \n                       bg-[#222] text-white text-base leadin-[18px] px-5 py-2.5 rounded-full flex items-center h-[42px]`}\n                  onClick={toggleSection}\n                >\n                  <Image\n                    src={\n                      inViewSection == ESectionInView.LIST\n                        ? '/map-icon.svg'\n                        : '/list-icon.svg'\n                    }\n                    alt=\"map-icon\"\n                    width={18}\n                    height={18}\n                    className=\"mr-2\"\n                  />\n\n                  {inViewSection == ESectionInView.LIST\n                    ? 'Show Map'\n                    : 'Show List'}\n                </button>\n              </div>\n            </div>\n\n            {/* <TrendingIdeas trending={thingsToDoDetails?.trending} />\n\n            <TopTours thingsToDoDetails={thingsToDoDetails} />\n\n            <NeedToKnow\n              description={thingsToDoDetails.need_to_know}\n              cardItems={thingsToDoDetails.need_to_know_items}\n            /> */}\n\n            {topTips && <AttractionTopTips topTips={topTips} />}\n\n            {thingsToDoDetails.faqs && (\n              <FaqSection faqs={thingsToDoDetails.faqs} />\n            )}\n\n            {thingsToDoDetails?.related_urls && (\n              <RelatedBreadcrumbLinks\n                breadcrumbs={thingsToDoDetails.related_urls}\n              />\n            )}\n\n            <Newsletter />\n          </div>\n        </>\n      )}\n    </div>\n  );\n};\n","import React, { useEffect, useState } from 'react';\nimport 'swiper/css';\nimport 'swiper/css/lazy';\nimport 'swiper/css/a11y';\nimport 'swiper/css/navigation';\nimport 'swiper/css/thumbs';\nimport 'swiper/css/effect-fade';\nimport SwiperCore, { Navigation } from 'swiper';\nSwiperCore.use([Navigation]);\nimport { SwiperSlide, Swiper } from 'swiper/react';\nimport NextImage from 'next/image';\n\ninterface IMAGEARRAY {\n  photos: any;\n  title: string;\n}\nconst PageHeroSliderSkeleton = () => {\n  return (\n    <div className=\"flex mt-2\">\n      <div className=\"flex w-full justify-between\">\n        <div className=\"xxsm:w-full md:w-[82%]\">\n          <div className=\"animate-pulse bg-gray-200 w-full object-cover xxsm:h-[360px] md:h-[410px] lg:h-[494px] rounded-[5px] relative\">\n            <div className=\"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2\">\n              <div className=\"flex items-center justify-center w-24 h-24 bg-gray-300 rounded-full\">\n                <svg\n                  className=\"w-10 h-10 text-gray-200 dark:text-gray-600\"\n                  aria-hidden=\"true\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  fill=\"currentColor\"\n                  viewBox=\"0 0 20 18\"\n                >\n                  <path d=\"M18 0H2a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2Zm-5.5 4a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Zm4.376 10.481A1 1 0 0 1 16 15H4a1 1 0 0 1-.895-1.447l3.5-7A1 1 0 0 1 7.468 6a.965.965 0 0 1 .9.5l2.775 4.757 1.546-1.887a1 1 0 0 1 1.618.1l2.541 4a1 1 0 0 1 .028 1.011Z\" />\n                </svg>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <div className=\"xxsm:hidden w-[18%] xxsm:h-[360px] md:h-[410px] lg:h-[494px] overflow-y-scroll no-scrollbar md:flex flex-col justify-start items-start pl-2\">\n          {[...Array(6)].map((_, index) => (\n            <div\n              key={index}\n              className=\"image-item animate-pulse bg-gray-200 w-full h-[75px] rounded-[5px] mb-2 relative\"\n            >\n              <div className=\"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2\">\n                <div className=\"flex items-center justify-center w-10 h-10 bg-gray-300 rounded-full\">\n                  <svg\n                    className=\"w-6 h-6 text-gray-200 dark:text-gray-600\"\n                    aria-hidden=\"true\"\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                    fill=\"currentColor\"\n                    viewBox=\"0 0 20 18\"\n                  >\n                    <path d=\"M18 0H2a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2Zm-5.5 4a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Zm4.376 10.481A1 1 0 0 1 16 15H4a1 1 0 0 1-.895-1.447l3.5-7A1 1 0 0 1 7.468 6a.965.965 0 0 1 .9.5l2.775 4.757 1.546-1.887a1 1 0 0 1 1.618.1l2.541 4a1 1 0 0 1 .028 1.011Z\" />\n                  </svg>\n                </div>\n              </div>\n            </div>\n          ))}\n        </div>\n      </div>\n    </div>\n  );\n};\nconst PageHeroSlider = ({ photos, title }: IMAGEARRAY) => {\n  const [selectedImageIndex, setSelectedImageIndex] = useState(0);\n  const [swiper, setSwiper] = useState<SwiperCore | null>(null);\n  const [isLastSlide, setIsLastSlide] = useState(false);\n  const [isFirstSlide, setIsFirstSlide] = useState(false);\n\n  const handleSlideChange = (swiper: any) => {\n    setSelectedImageIndex(swiper.activeIndex);\n\n    setIsLastSlide(swiper.isEnd);\n    setIsFirstSlide(swiper.isBeginning);\n  };\n  const handleSwiperInit = (swiper: any) => {\n    setIsFirstSlide(swiper.isBeginning);\n  };\n  const handleImageClick = (index: any) => {\n    setSelectedImageIndex(index);\n    swiper?.slideTo(index);\n  };\n  useEffect(() => {\n    const element = document.getElementById('selected-image');\n    if (element) {\n      element.scrollIntoView({\n        behavior: 'smooth',\n        block: 'nearest'\n      });\n    }\n  }, [selectedImageIndex]);\n\n  if (!photos || photos.length === 0) {\n    return <PageHeroSliderSkeleton />;\n  } else {\n    return (\n      <div className=\"flex mt-2\">\n        <div className=\"flex w-full justify-between\">\n          <div className=\"xxsm:w-full md:w-[82%]\">\n            <Swiper\n              onSwiper={setSwiper}\n              spaceBetween={20}\n              slidesPerView={1}\n              effect=\"slide\"\n              grabCursor\n              onSlideChange={(swiper: any) => handleSlideChange(swiper)}\n              onInit={(swiper: any) => handleSwiperInit(swiper)}\n              navigation={{\n                prevEl: '.custom-button-left',\n                nextEl: '.custom-button-right'\n              }}\n              a11y={{ enabled: true }}\n              observer\n              observeParents\n              observeSlideChildren\n            >\n              {Array.isArray(photos) &&\n                photos.length > 0 &&\n                photos.map(photo => {\n                  return (\n                    <SwiperSlide key={photo} className=\"min-h-full\">\n                      <div\n                        className={`cursor-pointer w-[1000px] xxsm:min-h-[320px]  sm:min-h-[494px] `}\n                      >\n                        <NextImage\n                          src={photo}\n                          layout=\"fill\"\n                          alt={photo}\n                          key={photo}\n                          quality={100}\n                        />\n                      </div>\n                    </SwiperSlide>\n                  );\n                })}\n              <>\n                <div\n                  style={{ left: '15px', top: '50%' }}\n                  className=\"flex custom-button-left absolute z-20 cursor-pointer xxsm:pl-[5px] md:pl-[0px]\"\n                >\n                  {isFirstSlide ? (\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      width=\"32\"\n                      height=\"32\"\n                      viewBox=\"0 0 32 32\"\n                      fill=\"none\"\n                    >\n                      <path\n                        d=\"M30 16C30 13.2311 29.1789 10.5243 27.6406 8.22202C26.1022 5.91973 23.9157 4.12531 21.3576 3.06569C18.7994 2.00606 15.9845 1.72881 13.2687 2.26901C10.553 2.8092 8.05844 4.14257 6.10051 6.1005C4.14257 8.05844 2.8092 10.553 2.26901 13.2687C1.72881 15.9845 2.00606 18.7994 3.06569 21.3576C4.12532 23.9157 5.91973 26.1022 8.22202 27.6406C10.5243 29.1789 13.2311 30 16 30C19.713 30 23.274 28.525 25.8995 25.8995C28.525 23.274 30 19.713 30 16ZM24 17L11.85 17L17.43 22.607L16 24L8 16L16 8L17.43 9.427L11.85 15L24 15L24 17Z\"\n                        fill=\"#D7D5D5\"\n                      />\n                    </svg>\n                  ) : (\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      width=\"32\"\n                      height=\"32\"\n                      viewBox=\"0 0 32 32\"\n                      fill=\"none\"\n                    >\n                      <path\n                        d=\"M30 16C30 13.2311 29.1789 10.5243 27.6406 8.22202C26.1022 5.91973 23.9157 4.12531 21.3576 3.06569C18.7994 2.00606 15.9845 1.72881 13.2687 2.26901C10.553 2.8092 8.05844 4.14257 6.10051 6.1005C4.14257 8.05844 2.8092 10.553 2.26901 13.2687C1.72881 15.9845 2.00606 18.7994 3.06569 21.3576C4.12532 23.9157 5.91973 26.1022 8.22202 27.6406C10.5243 29.1789 13.2311 30 16 30C19.713 30 23.274 28.525 25.8995 25.8995C28.525 23.274 30 19.713 30 16ZM24 17L11.85 17L17.43 22.607L16 24L8 16L16 8L17.43 9.427L11.85 15L24 15L24 17Z\"\n                        fill=\"white\"\n                      />\n                    </svg>\n                  )}\n                </div>\n                <div\n                  style={{ right: '0px', top: '50%' }}\n                  className=\"flex custom-button-right absolute z-20 cursor-pointer pr-[20px]\"\n                >\n                  {isLastSlide ? (\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      width=\"32\"\n                      height=\"32\"\n                      viewBox=\"0 0 32 32\"\n                      fill=\"none\"\n                    >\n                      <path\n                        d=\"M2 16C2 18.7689 2.82109 21.4757 4.35943 23.778C5.89777 26.0803 8.08427 27.8747 10.6424 28.9343C13.2006 29.9939 16.0155 30.2712 18.7313 29.731C21.447 29.1908 23.9416 27.8574 25.8995 25.8995C27.8574 23.9416 29.1908 21.447 29.731 18.7313C30.2712 16.0155 29.9939 13.2006 28.9343 10.6424C27.8747 8.08427 26.0803 5.89777 23.778 4.35943C21.4757 2.82109 18.7689 2 16 2C12.287 2 8.72601 3.475 6.1005 6.1005C3.475 8.72601 2 12.287 2 16ZM8 15H20.15L14.57 9.393L16 8L24 16L16 24L14.57 22.573L20.15 17H8V15Z\"\n                        fill=\"#D7D5D5\"\n                      />\n                    </svg>\n                  ) : (\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      width=\"32\"\n                      height=\"32\"\n                      viewBox=\"0 0 32 32\"\n                      fill=\"none\"\n                    >\n                      <path\n                        d=\"M2 16C2 18.7689 2.82109 21.4757 4.35943 23.778C5.89777 26.0803 8.08427 27.8747 10.6424 28.9343C13.2006 29.9939 16.0155 30.2712 18.7313 29.731C21.447 29.1908 23.9416 27.8574 25.8995 25.8995C27.8574 23.9416 29.1908 21.447 29.731 18.7313C30.2712 16.0155 29.9939 13.2006 28.9343 10.6424C27.8747 8.08427 26.0803 5.89777 23.778 4.35943C21.4757 2.82109 18.7689 2 16 2C12.287 2 8.72601 3.475 6.1005 6.1005C3.475 8.72601 2 12.287 2 16ZM8 15H20.15L14.57 9.393L16 8L24 16L16 24L14.57 22.573L20.15 17H8V15Z\"\n                        fill=\"white\"\n                      />\n                    </svg>\n                  )}\n                </div>\n              </>\n            </Swiper>\n          </div>\n\n          <div className=\"xxsm:hidden w-[18%] xxsm:h-[360px] md:h-[410px] lg:h-[494px] overflow-y-scroll no-scrollbar md:flex flex-col justify-start items-start pl-2\">\n            {photos?.map((photo: any, index: any) => {\n              return (\n                <div\n                  id={selectedImageIndex === index ? 'selected-image' : ''}\n                  key={photo}\n                  className={`image-item cursor-pointer ${\n                    selectedImageIndex === index ? 'highlight' : ''\n                  }`}\n                  onClick={() => handleImageClick(index)}\n                >\n                  <NextImage\n                    src={photo}\n                    width={1065}\n                    height={494}\n                    alt={photo}\n                    key={photo}\n                    quality={100}\n                    className=\"w-full object-cover h-[80px] rounded-[5px]\"\n                  />\n                </div>\n              );\n            })}\n          </div>\n        </div>\n        <style jsx>{`\n          .highlight {\n            border: 4px solid #2191fa;\n            border-radius: 9px;\n          }\n\n          .image-item {\n            width: 100%;\n            height: 87px;\n            margin-bottom: 7px;\n          }\n        `}</style>\n      </div>\n    );\n  }\n};\n\nexport default PageHeroSlider;\n","import dayjs from 'dayjs';\nimport { ATTRACTION } from '../../pages/[slug]/[slug2]';\n\ninterface TopTip {\n  id: string;\n  text: string;\n  likes: number;\n  dislikes: number;\n}\n\ninterface Top {\n  top_tips: TopTip[];\n}\ninterface Iprops {\n  attraction?: ATTRACTION;\n  top: Top[];\n}\nconst FeaturedNav = ({ attraction, top }: Iprops) => {\n  const topTipWithMostLikesAndLeastDislikes = top[0]?.top_tips?.reduce(\n    (tipWithMostLikesAndLeastDislikes, tip) => {\n      if (\n        tipWithMostLikesAndLeastDislikes.likes < tip.likes ||\n        (tipWithMostLikesAndLeastDislikes.likes === tip.likes &&\n          tipWithMostLikesAndLeastDislikes.dislikes > tip.dislikes)\n      ) {\n        return tip;\n      }\n      return tipWithMostLikesAndLeastDislikes;\n    },\n    top[0]?.top_tips[0]\n  );\n  return (\n    <section>\n      <nav className=\"grid xxsm:grid-cols-2  lg:grid-cols-5  gap-4 py-[12px] xxsm:px-0  lg:px-[10px] lg:border lg:border-t-0 lg:border-solid lg:border-gray-300 lg:shadow-md hover:shadow-lg\">\n        <div className=\"flex flex-col items-center border-r-2 lg:border-solid pr-[16px] lg:border-gray-300 col-span-1\">\n          <span className=\"text-center text-[#686868] text-[14px] xl:text-[16px] 2xl:text-[20px]\">\n            Wheel Chair Access\n          </span>\n          <span\n            className={`text-[14px] xl:text-[16px] font-semibold \n             ${\n               attraction?.google_data?.wheelchair_accessible_entrance\n                 ? 'text-[#4FAC23]'\n                 : 'text-[#1F2C5B]'\n             }\n            `}\n          >\n            {attraction ? (\n              attraction?.google_data?.wheelchair_accessible_entrance ? (\n                'Yes'\n              ) : (\n                'No'\n              )\n            ) : (\n              <div className=\"h-4 w-32 bg-gray-300 rounded-full animate-pulse\"></div>\n            )}\n          </span>\n        </div>\n        <div className=\"xxsm:hidden lg:flex flex-col items-center border-r-2 border-solid pr-[16px] border-gray-300 \">\n          <span className=\"text-[#686868] text-[14px] xl:text-[16px] 2xl:text-[20px]\">\n            Open Now\n          </span>\n          <span\n            className={`lg:text-[14px] xl:text-[16px] font-semibold\n              ${\n                attraction?.google_data?.current_opening_hours?.open_now\n                  ? 'text-[#4FAC23]'\n                  : 'text-[#1F2C5B]'\n              }\n            `}\n          >\n            {attraction ? (\n              attraction?.google_data?.current_opening_hours?.open_now ? (\n                'Open'\n              ) : (\n                'Closed'\n              )\n            ) : (\n              <div className=\"h-4 w-32 bg-gray-300 rounded-full animate-pulse\"></div>\n            )}\n          </span>\n        </div>\n        <div className=\"flex flex-col items-center lg:border-r-2 border-solid pr-[16px] lg:border-gray-300\">\n          <span className=\"text-[#686868] text-[14px] xl:text-[16px] 2xl:text-[20px]\">\n            Duration\n          </span>\n          <span\n            className={`text-[14px] text-center xl:text-[16px] font-semibold ${\n              attraction?.slug ===\n              'niagara-falls-tours-canada/Niagara-Helicopters'\n                ? 'text-[#4FAC23]'\n                : attraction?.google_data?.current_opening_hours?.weekday_text\n                ? 'text-[#4FAC23]'\n                : 'text-[#1F2C5B]'\n            }`}\n          >\n            {attraction ? (\n              attraction?.slug ===\n              'niagara-falls-tours-canada/Niagara-Helicopters' ? (\n                '12 minutes'\n              ) : attraction?.google_data?.current_opening_hours\n                  ?.weekday_text ? (\n                attraction?.google_data?.current_opening_hours?.weekday_text.filter(\n                  item => item.includes(dayjs().format('dddd'))\n                )[0] || 'Not Mentioned'\n              ) : (\n                'Not Mentioned'\n              )\n            ) : (\n              <div className=\"h-4 w-32 bg-gray-300 rounded-full animate-pulse\"></div>\n            )}\n          </span>\n        </div>\n        <div className=\"flex flex-col col-span-2 px-2 lg:px-[16px]\">\n          <div className=\"flex flex-row items-center gap-20\">\n            <div className=\"lg:text-[14px] xl:text-[16px] 2xl:text-[18px] font-semibold whitespace-nowrap max-w-[20%] \">\n              Top Tip\n            </div>\n            <div>\n              {topTipWithMostLikesAndLeastDislikes && (\n                <div className=\"flex justify-end gap-3 items-center max-w-[50%] \">\n                  <div className=\"flex gap-1 items-center\">\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      width=\"20\"\n                      height=\"20\"\n                      viewBox=\"0 0 20 20\"\n                      fill=\"none\"\n                    >\n                      <path\n                        d=\"M19.1395 13.5968C19.5493 13.074 19.7459 12.5136 19.7208 11.9364C19.6957 11.3007 19.4113 10.803 19.1771 10.4977C19.449 9.82016 19.5535 8.75366 18.646 7.92555C17.981 7.31911 16.8517 7.04726 15.2875 7.12254C14.1876 7.17273 13.2674 7.37767 13.2298 7.38603H13.2256C13.0165 7.42367 12.7948 7.46968 12.569 7.51987C12.5523 7.2522 12.5983 6.5872 13.0918 5.08992C13.6773 3.30824 13.6439 1.94479 12.983 1.03304C12.2888 0.0752824 11.1805 0 10.8542 0C10.5406 0 10.252 0.129653 10.047 0.368047C9.5828 0.90757 9.63717 1.90297 9.69572 2.36303C9.14365 3.84358 7.59618 7.47386 6.2871 8.48181C6.26201 8.49854 6.2411 8.51945 6.22019 8.54036C5.83541 8.94605 5.57611 9.38519 5.40045 9.76997C5.15369 9.63614 4.87347 9.56085 4.57234 9.56085H2.02111C1.05917 9.56085 0.28125 10.343 0.28125 11.3007V18.097C0.28125 19.059 1.06335 19.8369 2.02111 19.8369H4.57234C4.94457 19.8369 5.29171 19.7198 5.57611 19.519L6.55896 19.6361C6.70952 19.657 9.38623 19.9958 12.134 19.9414C12.6317 19.9791 13.1002 20 13.5351 20C14.2838 20 14.9362 19.9414 15.4799 19.8243C16.7597 19.5525 17.6338 19.0088 18.0772 18.21C18.4159 17.5993 18.4159 16.9929 18.3616 16.6081C19.1938 15.8553 19.3402 15.023 19.3109 14.4375C19.2942 14.0987 19.2189 13.8101 19.1395 13.5968ZM2.02111 18.7077C1.68234 18.7077 1.41048 18.4316 1.41048 18.097V11.2965C1.41048 10.9578 1.68652 10.6859 2.02111 10.6859H4.57234C4.91111 10.6859 5.18296 10.9619 5.18296 11.2965V18.0928C5.18296 18.4316 4.90693 18.7035 4.57234 18.7035H2.02111V18.7077ZM18.0688 13.1075C17.8931 13.2915 17.8597 13.5717 17.9935 13.7892C17.9935 13.7934 18.165 14.0862 18.1859 14.4877C18.2152 15.0355 17.9517 15.5207 17.3996 15.9348C17.203 16.0853 17.1236 16.3446 17.2072 16.5788C17.2072 16.583 17.3871 17.1351 17.0943 17.6579C16.8141 18.1598 16.1909 18.5194 15.2457 18.7202C14.4887 18.8833 13.4598 18.9126 12.1968 18.8122C12.18 18.8122 12.1591 18.8122 12.1382 18.8122C9.44896 18.8708 6.73043 18.5194 6.70116 18.5153H6.69698L6.27456 18.4651C6.29965 18.348 6.3122 18.2225 6.3122 18.097V11.2965C6.3122 11.1167 6.28292 10.941 6.23273 10.7779C6.30802 10.4977 6.51713 9.87453 7.01065 9.34337C8.88853 7.85445 10.7246 2.83145 10.804 2.61397C10.8375 2.52614 10.8459 2.42995 10.8291 2.33375C10.758 1.86533 10.7831 1.29235 10.8835 1.12087C11.1052 1.12505 11.7032 1.18779 12.0629 1.68549C12.4895 2.2752 12.4728 3.32915 12.0127 4.72606C11.3101 6.85487 11.2516 7.97574 11.8078 8.46926C12.0838 8.71602 12.4519 8.72857 12.7196 8.63237C12.9747 8.57382 13.2173 8.52363 13.4473 8.48599C13.464 8.48181 13.4849 8.47762 13.5017 8.47344C14.7856 8.19322 17.0859 8.02175 17.8848 8.74948C18.5623 9.36846 18.0813 10.1882 18.027 10.276C17.8722 10.5102 17.9182 10.8156 18.1273 11.0038C18.1315 11.0079 18.5707 11.422 18.5916 11.9783C18.6083 12.3505 18.4327 12.7311 18.0688 13.1075Z\"\n                        fill=\"black\"\n                      />\n                    </svg>\n                    <span className=\"lg:text-[14px] xl:text-[16px] 2xl:text-[18px]\">\n                      {topTipWithMostLikesAndLeastDislikes?.likes}\n                    </span>\n                  </div>\n                  <div className=\"flex gap-1 mt-[5px]\">\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      width=\"20\"\n                      height=\"20\"\n                      viewBox=\"0 0 20 20\"\n                      fill=\"none\"\n                    >\n                      <g clip-path=\"url(#clip0_5807_2457)\">\n                        <path\n                          d=\"M19.1327 6.40292C19.2121 6.18961 19.2874 5.90101 19.3083 5.5664C19.3376 4.97666 19.1912 4.14851 18.3589 3.39564C18.4133 3.01085 18.4133 2.40019 18.0745 1.79372C17.627 0.990661 16.7528 0.446926 15.4729 0.175058C14.6155 -0.00897493 13.4904 -0.0466181 12.1269 0.0579463C9.37891 0.00357281 6.70206 0.342362 6.55149 0.363275L5.56858 0.480387C5.28417 0.279623 4.93701 0.162511 4.56476 0.162511H2.01339C1.0514 0.162511 0.273438 0.944653 0.273438 1.90246V8.69915C0.273438 9.66115 1.05558 10.4391 2.01339 10.4391H4.56476C4.86591 10.4391 5.14614 10.3638 5.39291 10.23C5.56858 10.6148 5.8279 11.0539 6.2127 11.4597C6.23361 11.4806 6.25452 11.5015 6.27962 11.5182C7.59295 12.5262 9.1405 16.1567 9.68842 17.6373C9.63405 18.0974 9.57967 19.0929 10.0398 19.6324C10.2447 19.8708 10.5291 20.0005 10.847 20.0005C11.1691 20.0005 12.2816 19.9252 12.9759 18.9674C13.6326 18.0556 13.6702 16.6921 13.0847 14.9103C12.5911 13.4129 12.5451 12.7479 12.5618 12.4802C12.7877 12.5304 13.0094 12.5764 13.2227 12.614H13.2269C13.2645 12.6224 14.1847 12.8274 15.2847 12.8775C16.849 12.9528 17.9825 12.681 18.6433 12.0745C19.5551 11.2422 19.4464 10.1798 19.1745 9.50221C19.4087 9.19688 19.6931 8.69915 19.7182 8.0634C19.735 7.4862 19.5426 6.92992 19.1327 6.40292ZM4.56476 9.31399H2.01339C1.6746 9.31399 1.40273 9.03794 1.40273 8.70333V1.90665C1.40273 1.56786 1.67878 1.29599 2.01339 1.29599H4.56476C4.90355 1.29599 5.17542 1.57204 5.17542 1.90665V8.70333C5.17542 9.04212 4.90355 9.31399 4.56476 9.31399ZM18.0201 9.7197C18.0201 9.72388 18.1665 9.95393 18.2167 10.2676C18.2794 10.6566 18.1707 10.9787 17.8779 11.2463C17.079 11.9741 14.7786 11.8068 13.4946 11.5224C13.4778 11.5182 13.4611 11.514 13.4402 11.5098C13.2101 11.468 12.9634 11.4178 12.7124 11.3635C12.4447 11.2673 12.0767 11.2798 11.8006 11.5266C11.2443 12.0201 11.3071 13.1411 12.0056 15.27C12.4657 16.667 12.4824 17.721 12.0558 18.3107C11.6961 18.8084 11.1021 18.8712 10.8763 18.8754C10.7759 18.7081 10.7466 18.135 10.8219 17.6624C10.8344 17.5704 10.8261 17.4742 10.7968 17.3822C10.7173 17.1689 8.88118 12.1414 7.0032 10.6524C6.51384 10.1212 6.30053 9.49802 6.22525 9.21779C6.27544 9.05467 6.30471 8.879 6.30471 8.69915V1.90665C6.30471 1.78117 6.29217 1.65569 6.26707 1.53858L6.68951 1.48839H6.69369C6.71879 1.48421 9.44165 1.13287 12.131 1.19142C12.1478 1.19142 12.1687 1.19142 12.1896 1.19142C13.4569 1.09104 14.4817 1.12032 15.2387 1.28344C16.1756 1.48421 16.7946 1.83554 17.079 2.33327C17.376 2.84773 17.2129 3.37891 17.2003 3.4291C17.1125 3.66333 17.192 3.91847 17.3927 4.06904C18.6308 4.99757 18.0619 6.08086 17.9867 6.2147C17.8486 6.43219 17.8821 6.70824 18.0619 6.89646C18.4216 7.27289 18.5973 7.64932 18.5848 8.01739C18.568 8.56531 18.1456 8.9752 18.1163 9.0003C17.9072 9.18015 17.8695 9.48548 18.0201 9.7197Z\"\n                          fill=\"black\"\n                        />\n                      </g>\n                      <defs>\n                        <clipPath id=\"clip0_5807_2457\">\n                          <rect width=\"20\" height=\"20\" fill=\"white\" />\n                        </clipPath>\n                      </defs>\n                    </svg>\n\n                    <span className=\"lg:text-[14px] xl:text-[16px] 2xl:text-[18px]\">\n                      {topTipWithMostLikesAndLeastDislikes?.dislikes}\n                    </span>\n                  </div>\n                </div>\n              )}\n            </div>\n          </div>\n          <div className=\"flex flex-row lg:text-[14px] xl:text-[16px] 2xl:text-[18px] \">\n            {topTipWithMostLikesAndLeastDislikes?.text\n              ? topTipWithMostLikesAndLeastDislikes?.text\n              : 'No Top Tip Available'}\n          </div>\n        </div>\n      </nav>\n    </section>\n  );\n};\n\nexport default FeaturedNav;\n","import Image from 'next/image';\nimport React, { useContext, useEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport Calendar from 'react-calendar';\nimport dayjs from 'dayjs';\nimport { useRouter } from 'next/router';\nimport { AttractionCheckoutContext } from '../../utils/attractionCheckoutContext';\nimport { ATTRACTION } from '../../pages/[slug]/[slug2]';\nimport { PaxContext } from '../../utils/context/checkoutContext';\ninterface TopTip {\n  id: string;\n  text: string;\n  likes: number;\n  dislikes: number;\n}\ntype PASSENGERINFO = {\n  count: number;\n  label: string;\n  title: string;\n  price: number;\n};\nexport type PASSENGERPAX = {\n  adults: PASSENGERINFO;\n  children?: PASSENGERINFO;\n  infants?: PASSENGERINFO;\n};\ninterface Top {\n  top_tips: TopTip[];\n}\ninterface Iroprs {\n  setIsModalOpen: (open: boolean) => void;\n  attraction: ATTRACTION;\n}\ninterface DayContainerProps {\n  active: boolean;\n}\ninterface StyledProps {\n  modal: boolean;\n}\nconst StyledCelendar = styled(Calendar)<StyledProps>`\n  position: absolute;\n  z-index: 100;\n  width: 100%;\n  background: white;\n  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n\n  @media (max-width: 945px) {\n    max-width: 100%;\n  }\n  .react-calendar__month-view__days {\n    min-height: 300px;\n    height: ${props => (props.modal ? '295px' : '265px')};\n    width: 100%;\n    @media (max-width: 1800px) {\n      height: 295px;\n    }\n    @media (max-width: 945px) {\n      height: ${props => (props.modal ? '285px' : '200px')};\n    }\n  }\n  .react-calendar__month-view__weekdays {\n    text-align: center;\n  }\n  .react-calendar__navigation__prev2-button {\n    display: none;\n  }\n  .react-calendar__navigation {\n    margin-bottom: 0;\n    height: 35px;\n    font-size: 18px;\n    font-weight: 600;\n    display: flex;\n    margin: 10px;\n  }\n  .react-calendar__viewContainer {\n    padding: 10px;\n    height: 100%;\n    width: 100%;\n  }\n  .react-calendar__tile {\n    padding: 6px 6.6667px;\n  }\n  .react-calendar__tile--active {\n    background: #1f2c5b;\n    color: #fff;\n  }\n  .react-calendar__navigation__label {\n    pointer-events: none;\n  }\n  .react-calendar__tile:disabled {\n    background-color: #f0f0f0;\n  }\n  .react-calendar__navigation__next2-button {\n    display: none;\n  }\n`;\nconst DayContainer = styled.div<DayContainerProps>`\n  color: ${props => (props.active ? 'white' : 'black')};\n  .react-calendar__month-view__days__day {\n    background: gray;\n  }\n  .price {\n    color: ${props => (props.active ? 'white' : '#6b7280')};\n    font-size: 12px;\n  }\n\n  display: flex;\n  flex-direction: column;\n`;\nconst DateAndPaxModal = ({ setIsModalOpen, attraction }: Iroprs) => {\n  const {\n    tickets,\n    attraction_availability: {\n      prices: { adults, children, infants },\n      limit\n    }\n  } = attraction;\n\n  const handleSubmit = async () => {};\n  const [isOpen, setIsOpen] = useState(true);\n  const [totalCount, setCount] = useState<number>(1);\n  const modalRef: any = useRef(null);\n  const timeSlots = ['09:00 AM', '02:00 PM', '03:00 PM', '06:00 PM'];\n  const [selectedSlot, setSelectedSlot] = useState<string | null>(null);\n  const handleSlotClick = (timeSlot: string) => {\n    setSelectedSlot(prevSelectedSlot =>\n      prevSelectedSlot === timeSlot ? null : timeSlot\n    );\n  };\n\n  const handleCloseModal = (e: any) => {\n    if (modalRef.current && !modalRef.current.contains(e.target)) {\n      setIsModalOpen(false);\n    }\n  };\n  const [selectedDate, setSelectedDate] = useState<string>(\n    dayjs().format('YYYY-MM-DD')\n  );\n  const [mobileCalendar, setMobileCalendar] = useState<boolean>(false);\n\n  const [passengerPax, setPassengerPax] = useState<PASSENGERPAX>(() => {\n    return {\n      adults: {\n        count: 1,\n        label: 'Adult',\n        price: adults,\n        title: 'Adult'\n      },\n      children: {\n        count: 0,\n        label: 'Child',\n        price: children,\n        title: 'Children'\n      },\n      infants: {\n        count: 0,\n        label: 'Infant',\n        price: infants,\n        title: 'Infant'\n      }\n    };\n  });\n  const [totalPrice, setTotalPrice] = useState<number>(() =>\n    Number(passengerPax?.adults.price)\n  );\n  useEffect(() => {\n    document.addEventListener('mousedown', handleCloseModal);\n    return () => {\n      document.removeEventListener('mousedown', handleCloseModal);\n    };\n  }, []);\n  useEffect(() => {\n    const adults =\n      passengerPax.adults.count * Number(passengerPax.adults.price);\n    const children = passengerPax.children\n      ? passengerPax.children.count * Number(passengerPax.children.price)\n      : 0;\n    const infants = passengerPax.infants\n      ? passengerPax.infants.count * Number(passengerPax.infants.price)\n      : 0;\n\n    const childrenCount = passengerPax.children\n      ? passengerPax.children.count\n      : 0;\n    const infantsCount = passengerPax.infants ? passengerPax.infants.count : 0;\n    const totalCount = passengerPax.adults.count + childrenCount + infantsCount;\n    setCount(totalCount);\n    setTotalPrice(() => Number(adults + children + infants));\n  }, [passengerPax]);\n\n  const router = useRouter();\n  const { updateCheckoutDetails, updateAttraction } = useContext(\n    AttractionCheckoutContext\n  );\n\n  const proceedToCheckout = () => {\n    updateCheckoutDetails({\n      ...passengerPax,\n      amount: totalPrice,\n      currency: 'usd',\n      attractionName: attraction.name,\n      date: selectedDate\n    });\n    updateAttraction(attraction);\n    router.push('/attraction-checkout');\n  };\n  {\n    /* Modal Wrapper z-index should be 1150 or in between 1100 and 1200 */\n  }\n  return (\n    <div className=\"fixed inset-0  z-[1150] bg-gray-800 bg-opacity-50 flex items-center justify-center\">\n      <div\n        ref={modalRef}\n        className={`bg-white xxsm:mt-[20px] md:mt-[60px] rounded-[24px] w-[90%] md:w-[530px]  `}\n      >\n        <div className=\" mt-2 mr-2 flex justify-end\">\n          <span\n            className=\"cursor-pointer px-2 py-1\"\n            onClick={() => setIsModalOpen(false)}\n          >\n            <svg\n              width=\"21\"\n              height=\"21\"\n              viewBox=\"0 0 21 21\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <rect\n                x=\"0.398438\"\n                y=\"0.5\"\n                width=\"20.5989\"\n                height=\"20\"\n                rx=\"10\"\n                fill=\"#DEDEDE\"\n              />\n              <path\n                d=\"M14.7681 7.51358C14.8398 7.44442 14.897 7.36169 14.9363 7.27021C14.9757 7.17872 14.9964 7.08032 14.9973 6.98074C14.9982 6.88115 14.9793 6.78238 14.9416 6.69019C14.904 6.598 14.8483 6.51424 14.7779 6.44379C14.7076 6.37333 14.6238 6.31761 14.5317 6.27985C14.4395 6.2421 14.3408 6.22307 14.2412 6.22389C14.1416 6.22471 14.0432 6.24535 13.9517 6.28462C13.8602 6.32388 13.7774 6.38098 13.7081 6.45258L10.7021 9.45758L7.69715 6.45258C7.62848 6.37889 7.54568 6.31979 7.45368 6.27879C7.36168 6.2378 7.26237 6.21576 7.16167 6.21398C7.06097 6.21221 6.96094 6.23073 6.86755 6.26845C6.77416 6.30617 6.68933 6.36232 6.61811 6.43354C6.54689 6.50476 6.49074 6.58959 6.45302 6.68298C6.4153 6.77637 6.39678 6.8764 6.39855 6.9771C6.40033 7.0778 6.42237 7.17711 6.46336 7.26911C6.50436 7.36111 6.56346 7.44391 6.63715 7.51258L9.64015 10.5186L6.63515 13.5236C6.50267 13.6658 6.43054 13.8538 6.43397 14.0481C6.4374 14.2424 6.51611 14.4278 6.65352 14.5652C6.79094 14.7026 6.97632 14.7813 7.17062 14.7847C7.36492 14.7882 7.55297 14.7161 7.69515 14.5836L10.7021 11.5786L13.7071 14.5846C13.8493 14.7171 14.0374 14.7892 14.2317 14.7858C14.426 14.7823 14.6114 14.7036 14.7488 14.5662C14.8862 14.4288 14.9649 14.2434 14.9683 14.0491C14.9717 13.8548 14.8996 13.6667 14.7671 13.5246L11.7641 10.5186L14.7681 7.51358Z\"\n                fill=\"black\"\n              />\n            </svg>\n          </span>\n        </div>\n        <h2 className=\"px-[4%] text-[18px] xl:text-[22px] font-semibold flex justify-center\">\n          {attraction?.name}\n        </h2>\n\n        <div className=\"xxsm:px-4  md:px-14 md:py-4 xxsm:py-3 xl:py-6\">\n          <div className=\"h-auto\">\n            <div\n              onClick={(e: any) => {\n                e.stopPropagation();\n                setMobileCalendar(!mobileCalendar);\n              }}\n              className=\"border rounded border-gray-300 w-full mb-3  md:mb-6 px-4 py-2 gap-2 flex relative items-center hover:cursor-pointer\"\n            >\n              <Image\n                src=\"/calendar.svg\"\n                width={10}\n                height={10}\n                alt=\"calendar\"\n              />\n              <span className=\"xxsm:text-[14px] sm:text-[16px] text-black \">\n                {selectedDate}\n              </span>\n              <div\n                className={`rotate-180 ${\n                  mobileCalendar && 'rotate-0'\n                } absolute  right-3 `}\n              >\n                <Image\n                  src=\"/dropDown.png\"\n                  width={10}\n                  height={10}\n                  alt=\"dropdown\"\n                  className=\"hover:cursor-pointer\"\n                />\n              </div>\n            </div>\n            {mobileCalendar && (\n              <div className=\"relative bg-[#FAFAFA] rounded-[5px] \">\n                <StyledCelendar\n                  tileContent={({ activeStartDate, date, view }) => (\n                    <DayContainer\n                      active={\n                        selectedDate === dayjs(date).format('YYYY-MM-DD')\n                          ? true\n                          : false\n                      }\n                    ></DayContainer>\n                  )}\n                  // @ts-ignore\n                  modal={true}\n                  minDate={new Date()}\n                  showNeighboringMonth={false}\n                  onClickDay={(value: any) => {\n                    setSelectedDate(dayjs(value).format('YYYY-MM-DD'));\n                    setMobileCalendar(false);\n                  }}\n                  value={new Date(selectedDate)}\n                />\n              </div>\n            )}\n          </div>\n          <div>\n            <div\n              onClick={() => setIsOpen(!isOpen)}\n              className=\"flex justify-between z-[9999] cursor-pointer bg-white pb-2 border border-gray-300 rounded-md py-2 pl-2 items-center align-middle text-black\"\n            >\n              <div className=\"flex\">\n                <div className=\"hidden msm:flex\">\n                  <svg\n                    width=\"18\"\n                    height=\"18\"\n                    viewBox=\"0 0 18 18\"\n                    fill=\"none\"\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                  >\n                    <g id=\"vuesax/outline/user\">\n                      <g id=\"user\">\n                        <path\n                          id=\"Vector\"\n                          d=\"M9 9.5625C6.6225 9.5625 4.6875 7.6275 4.6875 5.25C4.6875 2.8725 6.6225 0.9375 9 0.9375C11.3775 0.9375 13.3125 2.8725 13.3125 5.25C13.3125 7.6275 11.3775 9.5625 9 9.5625ZM9 2.0625C7.245 2.0625 5.8125 3.495 5.8125 5.25C5.8125 7.005 7.245 8.4375 9 8.4375C10.755 8.4375 12.1875 7.005 12.1875 5.25C12.1875 3.495 10.755 2.0625 9 2.0625Z\"\n                          fill=\"#292D32\"\n                        />\n                        <path\n                          id=\"Vector_2\"\n                          d=\"M15.4397 17.0625C15.1322 17.0625 14.8772 16.8075 14.8772 16.5C14.8772 13.9125 12.2372 11.8125 8.99718 11.8125C5.75718 11.8125 3.11719 13.9125 3.11719 16.5C3.11719 16.8075 2.86219 17.0625 2.55469 17.0625C2.24719 17.0625 1.99219 16.8075 1.99219 16.5C1.99219 13.2975 5.13468 10.6875 8.99718 10.6875C12.8597 10.6875 16.0022 13.2975 16.0022 16.5C16.0022 16.8075 15.7472 17.0625 15.4397 17.0625Z\"\n                          fill=\"#292D32\"\n                        />\n                      </g>\n                    </g>\n                  </svg>\n                </div>\n                <span className=\"text-black ml-2 xxsm:text-[14px] sm:text-[16px]\">\n                  {Object.values(passengerPax)\n                    .filter(item => typeof item === 'object' && item?.count > 0)\n                    .map((item, index, array) => {\n                      if (typeof item === 'object' && item?.count > 0) {\n                        // @ts-ignore\n                        return `${item.label} ${item.count}X ${\n                          index === array.length - 1 ? '' : ', '\n                        }`;\n                      }\n                      return '';\n                    })}\n                </span>\n              </div>\n              <button\n                className={`bg-white px-4 py-2 rounded-md rotate-180 text-left transition-transform transition-fast ${\n                  isOpen && 'rotate-0'\n                } `}\n              >\n                <Image\n                  src=\"/dropDown.png\"\n                  width={10}\n                  height={10}\n                  alt=\"dropdown\"\n                />\n              </button>\n            </div>\n            {totalCount >= limit && (\n              <p className=\" text-[#1F2C5B] md:text-base text-center mt-[5px]  md:mt-[16px]\">\n                {' '}\n                Maximum limit of seats reached{' '}\n              </p>\n            )}\n          </div>\n          <div\n            className={` rounded-xl border border-solid border-gray-300 bg-[#FAFAFA] shadow-lg xxsm:p-2 msm:p-3 relative md:relative right-0 mt-[5px] md:mt-4 w-full ${\n              !isOpen ? 'hidden' : ''\n            }`}\n          >\n            <>\n              {' '}\n              <div className=\"grid grid-cols-4\">\n                <div className=\"col-span-2 flex flex-col  px-2   \">\n                  <div className=\"flex items-center \">\n                    <span className=\"text-black\">\n                      {`${passengerPax.adults.label}\\u00a0`}\n                    </span>{' '}\n                    <span className=\"text-black text-[10px]\">\n                      {passengerPax.adults.label === 'Quantity'\n                        ? '(All ages)'\n                        : '(Ages 13+)'}\n                    </span>\n                  </div>\n                  <div className=\" flex justify-start \">\n                    <div className=\"flex items-center \">\n                      <span className=\" text-[#1F2C5B]  text-sm \">\n                        ${passengerPax.adults.price}\n                      </span>\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"col-span-2 grid grid-cols-3\">\n                  <div className=\"flex justify-center items-center  \">\n                    <button\n                      onClick={() => {\n                        if (passengerPax.adults.count <= 1) return;\n\n                        setPassengerPax({\n                          ...passengerPax,\n                          adults: {\n                            ...passengerPax.adults,\n                            count: passengerPax.adults.count - 1\n                          }\n                        });\n                      }}\n                      className=\"col-span-1 rounded-full w-8 h-8 bg-white border-2  text-black\"\n                    >\n                      -\n                    </button>\n                  </div>\n                  <div className=\"flex justify-center items-center \">\n                    <span className=\"col-span-1 text-center text-[#1F2C5B] \">\n                      {passengerPax.adults.count}\n                    </span>\n                  </div>{' '}\n                  <div className=\"flex justify-center items-center \">\n                    <button\n                      onClick={() => {\n                        if (totalCount >= limit) {\n                          return;\n                        }\n                        setPassengerPax({\n                          ...passengerPax,\n                          adults: {\n                            ...passengerPax.adults,\n                            count: passengerPax.adults.count + 1\n                          }\n                        });\n                      }}\n                      className=\"col-span-1 rounded-full   w-8 h-8 bg-white border-2  text-black\"\n                    >\n                      +\n                    </button>\n                  </div>\n                </div>\n              </div>\n              {passengerPax.children &&\n                Number(passengerPax.children.price) !== 0 && (\n                  <div className=\"grid grid-cols-4\">\n                    <div className=\"col-span-2 flex flex-col   px-2 \">\n                      <div className=\"flex items-center\">\n                        <span className=\"text-black\">\n                          {`${passengerPax.children.label}\\u00a0`}\n                        </span>\n                        <span className=\"text-black    text-[10px] \">\n                          {passengerPax.children.label === 'Child' &&\n                            '(Ages 5-12)'}\n                          {passengerPax.children.label === 'Infant' &&\n                            '(Ages 0-5)'}\n                        </span>\n                      </div>\n                      <div className=\"col-span-1 flex justify-start \">\n                        <div className=\"flex items-center text-gray-500 \">\n                          <span className=\" text-[#1F2C5B]  text-sm\">\n                            ${passengerPax.children.price}\n                          </span>\n                        </div>\n                      </div>\n                    </div>\n\n                    <div className=\"col-span-2 grid grid-cols-3\">\n                      <div className=\"flex justify-center items-center \">\n                        <button\n                          onClick={() => {\n                            if (\n                              passengerPax.children &&\n                              passengerPax.children.count > 0\n                            ) {\n                              setPassengerPax({\n                                ...passengerPax,\n                                children: {\n                                  ...passengerPax.children,\n                                  count: passengerPax.children.count - 1\n                                }\n                              });\n                            }\n                          }}\n                          className=\"col-span-1 rounded-full    w-8 h-8 bg-white border-2  text-black\"\n                        >\n                          -\n                        </button>\n                      </div>\n                      <div className=\"flex justify-center items-center \">\n                        <span className=\"col-span-1 text-center text-[#1F2C5B] \">\n                          {passengerPax.children.count}\n                        </span>\n                      </div>{' '}\n                      <div\n                        onClick={() => {\n                          if (passengerPax.children) {\n                            if (totalCount >= limit) {\n                              return;\n                            }\n                            setPassengerPax({\n                              ...passengerPax,\n                              children: {\n                                ...passengerPax.children,\n                                count: passengerPax.children.count + 1\n                              }\n                            });\n                          }\n                        }}\n                        className=\"flex justify-center items-center \"\n                      >\n                        <button className=\"col-span-1 rounded-full   w-8 h-8 bg-white border-2  text-black\">\n                          +\n                        </button>\n                      </div>\n                    </div>\n                  </div>\n                )}\n              {passengerPax.infants && (\n                <div className=\"grid grid-cols-4\">\n                  <div className=\"col-span-2 flex flex-col  px-2 \">\n                    <div className=\"flex items-center\">\n                      <span className=\"text-black\">\n                        {`${passengerPax.infants.label}\\u00a0`}\n                      </span>\n                      <span className=\"text-black    text-[10px] \">\n                        {passengerPax.infants.label === 'Child' &&\n                          '(Ages 5-12)'}\n                        {passengerPax.infants.label === 'Infant' &&\n                          '(Ages 0-5)'}\n                      </span>\n                    </div>\n                    <div className=\"col-span-1 flex justify-start \">\n                      <div className=\"flex items-center \">\n                        <span className=\" text-[#1F2C5B]  text-sm   \">\n                          ${passengerPax.infants.price}\n                        </span>\n                      </div>\n                    </div>\n                  </div>\n\n                  <div className=\"col-span-2 grid grid-cols-3\">\n                    <div className=\"flex justify-center items-center \">\n                      <button\n                        onClick={() => {\n                          if (\n                            passengerPax.infants &&\n                            passengerPax.infants.count > 0\n                          ) {\n                            setPassengerPax({\n                              ...passengerPax,\n                              infants: {\n                                ...passengerPax.infants,\n                                count: passengerPax.infants.count - 1\n                              }\n                            });\n                          }\n                        }}\n                        className=\"col-span-1 rounded-full    w-8 h-8 bg-white border-2  text-black\"\n                      >\n                        -\n                      </button>\n                    </div>\n                    <div className=\"flex justify-center items-center \">\n                      <span className=\"col-span-1 text-center text-[#1F2C5B] \">\n                        {passengerPax.infants.count}\n                      </span>\n                    </div>{' '}\n                    <div className=\"flex justify-center items-center \">\n                      <button\n                        onClick={() => {\n                          if (totalCount >= limit) {\n                            return;\n                          }\n                          if (passengerPax.infants) {\n                            setPassengerPax({\n                              ...passengerPax,\n                              infants: {\n                                ...passengerPax.infants,\n                                count: passengerPax.infants.count + 1\n                              }\n                            });\n                          }\n                        }}\n                        className=\"col-span-1 rounded-full   w-8 h-8 bg-white border-2  text-black\"\n                      >\n                        +\n                      </button>\n                    </div>\n                  </div>\n                </div>\n              )}\n              <p className=\"pl-2 text-xs\">Prices shown in USD</p>\n            </>\n          </div>\n\n          <h2 className=\"text-[16px] font-semibold mt-3 \">\n            Operational Hours:\n          </h2>\n          <span className=\"font-medium xxsm:text-[14px] sm:text-[16px]\">\n            {router.asPath === '/niagara-falls-tours-canada/Niagara-Helicopters'\n              ? `9am - 7pm`\n              : `24 Hours`}\n          </span>\n\n          <button\n            onClick={() => proceedToCheckout()}\n            className=\" bg-[#1F2C5B] rounded-md py-3 text-white p-6 w-full my-[5px] md:my-4\"\n          >\n            Book now ${totalPrice.toFixed(2)}\n          </button>\n          {/* <div className=\"border-t border-solid border-gray-300 mb-8\">\n              <h2 className=\"text-[16px] font-semibold mt-6 \">\n                Available Time Slots{' '}\n              </h2>\n              <div className=\"flex gap-4 mt-4 flex-wrap\">\n                {timeSlots.map((timeSlot, index) => (\n                  <div\n                    onClick={() => handleSlotClick(timeSlot)}\n                    key={index}\n                    className={`flex-shrink-0 w-28 h-12 p-2 flex justify-center text-[16px] items-center gap-2 cursor-pointer rounded-[8px] border border-solid ${\n                      selectedSlot === timeSlot\n                        ? 'bg-[#FD5D5A] border-[#FD5D5A] text-white'\n                        : 'border-[#5B5B5B] bg-white'\n                    }`}\n                  >\n                    {timeSlot}\n                  </div>\n                ))}\n              </div>\n            </div> */}\n          <div className=\"flex items-start gap-2  mt-2  slide-in   \">\n            <Image\n              src=\"/tick-square.svg\"\n              width={24}\n              height={24}\n              alt=\"tick mark\"\n              className=\"xxsm:w-[20px] sm:w-[24px]\"\n            />\n            <span className=\"font-medium xxsm:text-[14px] sm:text-[16px]\">\n              Lowest price guarantee{' '}\n            </span>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default DateAndPaxModal;\n","import React, { Dispatch, SetStateAction, useEffect, useState } from 'react';\nimport DateAndPaxModal from './DateAndPaxModal';\nimport {\n  ATTRACTION,\n  ATTRACTION_AVAILABILITY\n} from '../../pages/[slug]/[slug2]';\n\ninterface ITopBarProps {\n  headings: string[];\n  attraction: ATTRACTION;\n  isModalOpen: boolean;\n  setIsModalOpen: Dispatch<SetStateAction<boolean>>;\n}\n\nconst TopBar: React.FC<ITopBarProps> = ({\n  headings,\n  attraction,\n  isModalOpen,\n  setIsModalOpen\n}) => {\n  const [activeHeading, setActiveHeading] = useState<string | null>(null);\n\n  const handleClick = (heading: string) => {\n    scrollToSection(heading);\n  };\n  const handleScroll = () => {\n    const windowMidpoint = window.innerHeight / 5;\n\n    let closestHeading = null;\n    let closestDistance = Infinity;\n\n    headings.forEach(heading => {\n      const sectionId = heading.toLowerCase().replace(/\\s+/g, '-');\n      const element = document.getElementById(sectionId);\n\n      if (element) {\n        const rect = element.getBoundingClientRect();\n        const distance = Math.min(\n          Math.abs(rect.top - windowMidpoint),\n          Math.abs(rect.bottom - windowMidpoint)\n        );\n\n        if (distance < closestDistance) {\n          closestHeading = heading;\n          closestDistance = distance;\n        }\n      }\n    });\n\n    setActiveHeading(closestHeading);\n  };\n\n  useEffect(() => {\n    window.addEventListener('scroll', handleScroll);\n\n    return () => {\n      window.removeEventListener('scroll', handleScroll);\n    };\n  }, [headings, setActiveHeading]);\n\n  const scrollToSection = (heading: string) => {\n    const sectionId = heading.toLowerCase().replace(/\\s+/g, '-');\n    const section = document.getElementById(sectionId);\n\n    if (section) {\n      const offset = section.offsetTop - 140;\n      window.scrollTo({ top: offset, behavior: 'smooth' });\n    }\n  };\n  return (\n    <>\n      <div className=\"sticky z-[10] top-[55px]\">\n        <div className=\"sm:h-6 bg-white\"></div>\n        <div className=\"bg-[#F4F4F4]\">\n          <div className=\"flex justify-between items-center px-4 h-16\">\n            <div className=\"flex space-x-4 md:space-x-8 justify-between\">\n              {headings.map(heading => (\n                <div\n                  key={heading}\n                  onClick={() => handleClick(heading)}\n                  className={`cursor-pointer ${\n                    activeHeading === heading\n                      ? 'border-b-2 solid border-[#178ECC]'\n                      : ''\n                  }`}\n                >\n                  <span>{heading}</span>\n                </div>\n              ))}\n            </div>\n            {attraction?.tickets && (\n              <button\n                onClick={() => setIsModalOpen(true)}\n                className=\"hidden md:flex bg-primary hover:bg-[#2E3D7A] active:bg-[#2E3D7A] text-white px-[22px] py-[8px] rounded-[46px]\"\n              >\n                Buy Ticket\n              </button>\n            )}\n          </div>\n        </div>\n      </div>\n      {isModalOpen && (\n        <DateAndPaxModal\n          attraction={attraction}\n          setIsModalOpen={setIsModalOpen}\n        />\n      )}\n    </>\n  );\n};\n\nexport default TopBar;\n","import React, { Dispatch, SetStateAction, useCallback, useRef } from 'react';\nimport { ATTRACTION, Review, Top } from '../../pages/[slug]/[slug2]';\nimport Image from 'next/image';\nimport { useEffect, useState } from 'react';\n\nimport LocationMap from '../../components/Attraction/locationmap';\n\nimport styled from 'styled-components';\nimport dynamic from 'next/dynamic';\nimport PageHeroSlider from '../../components/Attraction/PageHeroSlider';\nimport { Rating } from 'react-simple-star-rating';\nimport FeaturedNav from '../../components/Attraction/featuredNav';\nimport TopBar from '../../components/Attraction/topBar';\nimport TopTip from '../../components/Attraction/topTip';\nimport AddTopTipModal from '../../components/Attraction/AddTopTipModal';\nimport { useAuthContext } from '../../utils/context/authContext';\n\nimport axios from 'axios';\nimport { useRouter } from 'next/router';\n\nimport ReviewsSection from './Reviews';\nimport { ConvertPublicUrlToGsUrl } from '../../utils/ConvertPublicUrlToGsUrl';\n\nconst MARKDOWN = dynamic(() => import('../../utils/react-markdown'));\nconst StyleMarkdown = styled.div`\n  line-height: 2rem;\n  color: #333333;\n  h2 {\n    margin-bottom: 10px;\n    font-size: 26px;\n    font-weight: 600;\n    @media (max-width: 1024px) {\n      font-size: 20px;\n    }\n    @media (max-width: 640px) {\n      font-size: 18px;\n    }\n  }\n  h3 {\n    font-size: 20px;\n    font-weight: 500;\n    @media (max-width: 1024px) {\n      font-size: 18px;\n    }\n    @media (max-width: 640px) {\n      font-size: 16px;\n    }\n    @media (max-width: 540px) {\n      font-size: 14px;\n    }\n  }\n  a {\n    color: #38bdf8 !important;\n    text-decoration: underline;\n  }\n  p {\n    font-size: 16px;\n    font-weight: 400;\n    @media (max-width: 1024px) {\n      font-size: 14px;\n    }\n    @media (max-width: 640px) {\n      font-size: 12px;\n    }\n    @media (min-width: 1280px) {\n      font-size: 16px;\n    }\n  }\n  .center {\n    width: 100%;\n    display: flex;\n    justify-content: center;\n    margin-top: 30px;\n  }\n  .cta-two-tone {\n    background-image: url('https://res.cloudinary.com/see-sight-tours/image/upload/v1669883122/dark-back_tqnwfs.png');\n    width: 50%;\n\n    @media (max-width: 1200px) {\n      width: 70%;\n    }\n    @media (max-width: 700px) {\n      width: 100%;\n    }\n    min-height: 200px;\n    border-radius: 20px;\n    background-size: cover;\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n\n    p {\n      margin-top: 1rem;\n      color: white;\n      padding: 0 0.5rem;\n      font-size: 26px;\n      text-align: center;\n      min-height: 50%;\n      position: relative;\n      @media (max-width: 900px) {\n        text-align: center;\n        font-size: 22px;\n      }\n      @media (max-width: 500px) {\n        text-align: center;\n        height: 80%;\n        font-size: 20px;\n      }\n    }\n    .button-container {\n      width: 100%;\n      display: flex;\n      background-image: url('https://res.cloudinary.com/see-sight-tours/image/upload/v1669883122/light-water_pjgzcg.png');\n      background-position: center;\n      justify-content: center;\n      position: relative;\n      min-height: 30%;\n      border-radius: 0px 0px 20px 20px;\n      @media (max-width: 500px) {\n        height: 20%;\n      }\n      a {\n        position: absolute;\n        top: -35%;\n        background: #d14f4d;\n        border-radius: 20px;\n        width: 45%;\n        height: 70%;\n        text-decoration: none;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        text-align: center;\n        color: white !important;\n        font-size: 20px;\n        font-weight: bold;\n        @media (max-width: 500px) {\n          width: 60%;\n          height: 60%;\n          font-size: 16px;\n        }\n        &:hover {\n          background: #fd3f3c;\n        }\n      }\n    }\n  }\n`;\ninterface IProps {\n  attraction: ATTRACTION;\n  handleSubmit: () => Promise<void>;\n  toptipText: string;\n  setToptipText: Dispatch<SetStateAction<string>>;\n  updateTopTip: (id: string, likes: number, dislikes: number) => Promise<void>;\n  isModalOpen: boolean;\n  top: Top[];\n  setTop: Dispatch<SetStateAction<Top[]>>;\n  setIsModalOpen: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const AttractionPage = ({\n  attraction,\n  handleSubmit,\n  toptipText,\n  setToptipText,\n  updateTopTip,\n  setTop,\n  isModalOpen,\n  setIsModalOpen,\n  top\n}: IProps) => {\n  const [reviews, setReviews] = useState<Review[]>([]);\n  const [showFullDescription, setShowFullDescription] = useState(false);\n\n  const handleSeeMoreDescription = () => {\n    setShowFullDescription(!showFullDescription);\n  };\n  const { user }: any = useAuthContext();\n\n  const [selectedRating, setSelectedRating] = useState<string>('');\n  const [currentPage, setCurrentPage] = useState(1);\n  const [reviewsCount, setReviewsCount] = useState(0);\n\n  const [openDropdownIndex, setOpenDropdownIndex] = useState<string | null>(\n    null\n  );\n  const dropdownRefs = useRef<Map<string, HTMLDivElement | null>>(new Map());\n\n  const handleClickOutside = (event: MouseEvent) => {\n    if (openDropdownIndex !== null) {\n      const ref = dropdownRefs.current.get(openDropdownIndex);\n      if (ref && !ref.contains(event.target as Node)) {\n        setOpenDropdownIndex(null);\n      }\n    }\n  };\n  useEffect(() => {\n    document.addEventListener('mousedown', handleClickOutside);\n    return () => {\n      document.removeEventListener('mousedown', handleClickOutside);\n    };\n  }, [openDropdownIndex]);\n\n  const itemsPerPage = 5;\n  const router = useRouter();\n  const [isOpen, setIsOpen] = useState(false);\n  const [showAllReviews, setShowAllReviews] = useState(false);\n  const [visibleReviews, setVisibleReviews] = useState(4);\n  const seeMoreReviewsClickHandler = () => {\n    setShowAllReviews(!showAllReviews);\n    setVisibleReviews(visibleReviews ? 4 : top?.length);\n  };\n\n  const [loader, setLoader] = React.useState(false);\n  const fetchReviews = async () => {\n    try {\n      setLoader(true);\n\n      // Construct the URL for fetching reviews based on the provided parameters\n      const response = await axios.get(\n        `${process.env.NEXT_PUBLIC_FIREBASE_CONNECTION}/attraction-review/${\n          attraction.id\n        }?sortBy=created_at&rating=${\n          selectedRating === 'all-stars' ? '' : selectedRating\n        }&sortOrder=desc&page=${currentPage}&limit=${itemsPerPage}`\n      );\n\n      if (response.data.reviews) {\n        // Process each review to update and format necessary fields\n        const updatedReviews = await Promise.all(\n          response.data.reviews.map(async (review: any) => {\n            // Extract and convert creation time from seconds to formatted date string\n            const createdAtSeconds = review?.created_at?._seconds;\n            const createdAtMilliseconds = createdAtSeconds * 1000;\n            const dateAndTime = new Date(\n              createdAtMilliseconds\n            ).toLocaleDateString('en-US', {\n              year: 'numeric',\n              month: '2-digit',\n              day: '2-digit'\n            });\n            // Split the reviewer's name into first and last names\n            const fullName = review.name?.split(' ');\n            const firstName = fullName?.[0];\n            const lastName = fullName?.[1];\n\n            // Construct display name based on the presence of a last name\n            const displayName =\n              lastName && lastName.toLowerCase() !== 'undefined'\n                ? `${firstName} ${lastName}`\n                : firstName;\n\n            // Variable to store the converted gs:// URL\n            let userGsUrl = '';\n\n            // Check if the review is from the current user and convert gs:// URL if needed\n            if (user && user?.uid === review.user) {\n              userGsUrl = await ConvertPublicUrlToGsUrl(user?.photoURL);\n              localStorage.setItem('user_gs_url', userGsUrl);\n            } else {\n              // Check if the current user has reviewed\n              const userHasReviewed = response.data.reviews.some(\n                (review: any) => user && user.uid === review.user\n              );\n\n              // Convert gs:// URL to public URL if the current user has not reviewed and has a photoURL\n              if (!userHasReviewed && user && user.photoURL) {\n                userGsUrl = await ConvertPublicUrlToGsUrl(user?.photoURL);\n                localStorage.setItem('user_gs_url', userGsUrl);\n              }\n            }\n\n            return {\n              rating: review.rating,\n              time: dateAndTime,\n              name: review.user === user?.uid ? user?.displayName : displayName,\n              review: review.review,\n              image: review.user === user?.uid ? user?.photoURL : review.image,\n              reviewId: review.id,\n              userId: review.user,\n              gs_url: review.gs_url\n            };\n          })\n        );\n\n        setReviews(updatedReviews);\n        setReviewsCount(response.data.reviewsCount);\n      }\n    } catch (error) {\n      console.error('Error fetching reviews:', error);\n    }\n    setLoader(false);\n  };\n  useEffect(() => {\n    if (attraction) {\n      fetchReviews();\n    }\n  }, [attraction, selectedRating, currentPage, user]);\n\n  useEffect(() => {\n    const handleBackButton = () => {\n      localStorage.setItem(\n        'referringPage',\n        `${window.location.origin}${router.asPath}`\n      );\n    };\n\n    window.addEventListener('popstate', handleBackButton);\n\n    return () => {\n      window.removeEventListener('popstate', handleBackButton);\n    };\n  }, []);\n\n  const {\n    name,\n    long_description,\n    hours_of_operation,\n    short_description,\n    address,\n    images\n  } = attraction || ({} as ATTRACTION);\n\n  return (\n    <div className=\"w-[90%] lg:w-[85%] 3xl:w-[70%] max-w-[1750px] mx-auto sm:mt-4\">\n      <div\n        className=\"flex sm:hidden font-semibold text-[14px] leading-[19.5px] gap-4 py-4 cursor-pointer hover:underline text-black13 hover:text-primary\"\n        onClick={() => {\n          router.back();\n        }}\n      >\n        <Image\n          src={'/black-left-arrow.svg'}\n          alt=\"left arrow\"\n          width={7}\n          height={8}\n        />\n        Back\n      </div>\n      <h1\n        className=\"md:px-[5%] md:pl-0 text-[20px] xl:text-[32px] font-extrabold mb-2 \"\n        id=\"what-you-will-see\"\n      >\n        {name}\n      </h1>\n      {attraction?.google_data?.rating ? (\n        <span className=\"flex items-center gap-1\">\n          <Rating\n            initialValue={attraction?.google_data?.rating}\n            allowFraction={true}\n            disableFillHover={true}\n            fillColor=\"orange\"\n            emptyColor=\"#9B9B9B\"\n            readonly={true}\n            SVGstyle={{\n              display: 'inline-block'\n            }}\n            size={15}\n          />\n          <span className=\"font-semibold\">\n            {attraction?.google_data?.rating}\n          </span>\n          <span>({attraction?.google_data?.user_ratings_total})</span>\n        </span>\n      ) : (\n        <div className=\"mt-4\"></div>\n      )}\n      <PageHeroSlider\n        photos={images.map(item => {\n          return item.file.url;\n        })}\n        title={name}\n      />\n      <FeaturedNav attraction={attraction} top={top} />\n      <TopBar\n        isModalOpen={isOpen}\n        setIsModalOpen={setIsOpen}\n        attraction={attraction}\n        headings={['Overview', 'Top Tips', 'Reviews']}\n      />\n\n      <h2\n        id=\"overview\"\n        className=\"md:pl-0 text-[20px] xl:text-[24px] font-semibold mt-8 mb-2 \"\n      >\n        Overview\n      </h2>\n\n      {short_description ? (\n        <div className=\"text-justify xl:text-[16px] pr-2 overflow-hidden leading-[2rem]\">\n          {showFullDescription ? (\n            <>\n              {short_description}\n              <span\n                className=\"font-semibold cursor-pointer\"\n                onClick={handleSeeMoreDescription}\n              >\n                {' '}\n                ...see less\n              </span>\n            </>\n          ) : (\n            <>\n              {short_description?.length > 550 ? (\n                <>\n                  {short_description.slice(0, 550)}\n                  <span\n                    className=\"font-semibold cursor-pointer\"\n                    onClick={handleSeeMoreDescription}\n                  >\n                    {' '}\n                    ...see more\n                  </span>\n                </>\n              ) : (\n                short_description\n              )}\n            </>\n          )}\n        </div>\n      ) : (\n        <h2>\n          Explore this amazing attraction and discover what makes it a\n          must-visit. Stay tuned for more details!\n        </h2>\n      )}\n      <div id=\"top-tips\">\n        <TopTip\n          setIsModalOpen={setIsModalOpen}\n          top={top}\n          updateTopTip={updateTopTip}\n        />\n      </div>\n      <ReviewsSection\n        rating={attraction?.google_data?.rating}\n        totalCount={attraction?.google_data?.user_ratings_total}\n        reviews={reviews}\n        setReviews={setReviews}\n        id={attraction?.id}\n        fetchReviews={fetchReviews}\n        currentPage={currentPage}\n        setCurrentPage={setCurrentPage}\n        setSelectedRating={setSelectedRating}\n        selectedRating={selectedRating}\n        reviewsCount={reviewsCount}\n      />\n      {isModalOpen && (\n        <AddTopTipModal\n          toptipText={toptipText}\n          setToptipText={setToptipText}\n          handleSubmit={handleSubmit}\n          top={top}\n          setIsModalOpen={setIsModalOpen}\n        />\n      )}\n      <div>\n        <LocationMap\n          name={name}\n          address={address}\n          data={{ hours_of_operation, address }}\n        />\n        <div id=\"Attractions\" className=\"\">\n          <StyleMarkdown id=\"long-description\" className=\"mt-5 mb-8\">\n            {long_description && <MARKDOWN content={long_description} />}\n          </StyleMarkdown>\n        </div>\n      </div>\n\n      {/* Buy Ticket z-index should be 1200 and higher as it should be visible always on mobile bottom bar*/}\n      {!isOpen && attraction?.tickets && (\n        <div className=\"z-[1200] fixed  md:hidden px-[2%]    bg-white    items-center flex justify-between bottom-0 right-0  w-full py-4 rounded-md    text-white shadow-2xl shadow-offset-md   \">\n          <button\n            className=\"bg-primary w-full text-white min-w-[30%]  px-4 py-2 rounded-lg\"\n            id=\"mobile-check-dates\"\n            onClick={() => setIsOpen(true)}\n          >\n            {' '}\n            Buy Ticket\n          </button>\n        </div>\n      )}\n    </div>\n  );\n};\n","import { useMutation, useQuery } from '@apollo/client';\nimport { useEffect, useState } from 'react';\nimport client from '../../apollo-client';\n\nimport {\n  replaceCanonical,\n  replaceTripshepherdWithSeeSight\n} from '../../utils/trip-sheppered-text';\nimport { ATTRACTION_PAGE } from '../../api/attraction';\nimport Head from 'next/head';\nimport {\n  FETCH_TOP_TIPS,\n  INSERT_TOP_TIP,\n  UPDATE_TOP_TIP\n} from '../../api/abondonedCheckoutMutation';\nimport axios from 'axios';\nimport { ThingsToDo } from '../../components/ThingsToDo/ThingsToDo';\nimport { ThingsToDO } from '../../types/pages/things-to-do';\nimport { TopTip as TopTipType } from '../../components/Attraction/topTip';\nimport { LoadingSpinner } from '../../shared-components/LoadingSpinner/LoadingSpinner';\nimport { AttractionPage } from '../../components/Attraction/AttractionPage';\nimport { useAuthContext } from '../../utils/context/authContext';\ninterface TopTips {\n  id: string;\n  text: string;\n  likes: number;\n  dislikes: number;\n}\nexport interface Review {\n  name: string;\n  user_image: string;\n  rating: string;\n  created_at: {\n    _nanoseconds: number;\n    _seconds: number;\n  };\n  time?: string;\n  review: string;\n  reviewId?: string;\n  userId?: string;\n  image: string;\n  gs_url?: string;\n}\nexport interface Top {\n  top_tips: TopTips[];\n}\ninterface IProps {\n  attraction: ATTRACTION | ThingsToDO;\n  params: Record<string, any>;\n  slug: string;\n}\ninterface CARDMEDIAINTERFACE {\n  name: string;\n  alt: string;\n  url: string;\n  fragment: string;\n  type: string;\n}\ninterface PRODUCTINTERFACE {\n  id: string;\n  name: string;\n  slug: string;\n  duration: string;\n  price: string;\n  cardMessage: string;\n  cardSnippet: string;\n  cardMedia: [CARDMEDIAINTERFACE];\n  reviews: [\n    {\n      id: string;\n      rating: number;\n    }\n  ];\n}\ninterface ATTRACTION_PAGE_INTERFACE {\n  strapi_Attraction: [ATTRACTION];\n}\nexport interface ATTRACTION {\n  id: number;\n  long_description: string;\n  short_description: string;\n  banner_media: Array<{ image: string }> | any;\n  canonical: string;\n  city: number;\n  address: string;\n  hours_of_operation: string;\n  meta_description: string;\n  meta_title: string;\n  og_title: string;\n  name: string;\n  page_title: string;\n  title: string;\n  snippet: string;\n  slug: string;\n  google_data: GOOGLEDATA;\n  tickets: boolean;\n  og_description: string;\n  attraction_availability: ATTRACTION_AVAILABILITY;\n  images: [\n    {\n      file: {\n        url: string;\n        alternativeText: string;\n      };\n    }\n  ];\n}\ninterface GOOGLEDATA {\n  rating: number;\n  reviews: Review[];\n  user_ratings_total: number;\n  current_opening_hours: {\n    open_now: boolean;\n    weekday_text: string[];\n  };\n  wheelchair_accessible_entrance: boolean;\n}\nexport interface ATTRACTION_AVAILABILITY {\n  limit: number;\n  type: ATTRACTION_AVAILABILITY_TYPE;\n  prices: PRICES;\n}\nenum ATTRACTION_AVAILABILITY_TYPE {\n  FREE_SALE = 'FREE_SALE',\n  EXTERNAL_AVAILABILITY = 'EXTERNAL_AVAILABILITY'\n}\ninterface PRICES {\n  adults: number;\n  children: number;\n  infants: number;\n}\nexport async function getServerSideProps({ params }: IProps) {\n  try {\n    const slug = `${params.slug}/${params.slug2}`;\n    let data;\n\n    if (params.slug2.startsWith('things-to-do-in')) {\n      const cityName = params.slug2.split('things-to-do-in-')[1];\n      // Check if cityName matches params.slug\n      if (cityName && params.slug === cityName) {\n        // Fetch things to do data using axios\n        const response = await axios.get(\n          `${process.env.NEXT_PUBLIC_FIREBASE_CONNECTION}/things-to-do/${params.slug2}?product=true&blog=true`\n        );\n        data = response.data;\n      } else {\n        // If cityName does not match params.slug, return a 404 page\n        return {\n          redirect: {\n            statusCode: 301,\n            destination: '/404'\n          }\n        };\n      }\n    } else {\n      // Fetch attraction data from the Strapi API\n      const {\n        data: {\n          strapi_Attraction: [attraction] = []\n        } = {} as ATTRACTION_PAGE_INTERFACE\n      } = await client.query<ATTRACTION_PAGE_INTERFACE>({\n        query: ATTRACTION_PAGE,\n        variables: {\n          slug,\n          slug2: slug\n        }\n      });\n\n      data = attraction;\n    }\n\n    if (!data) {\n      return {\n        redirect: {\n          statusCode: 301,\n          destination: '/404'\n        }\n      };\n    }\n\n    return {\n      props: {\n        attraction: JSON.parse(\n          replaceTripshepherdWithSeeSight(JSON.stringify(data))\n        ),\n        slug\n      }\n    };\n  } catch (error) {\n    console.error('Error fetching data:', error);\n    return {\n      notFound: true\n    };\n  }\n}\n\nconst SubSlug = ({ attraction, slug }: IProps) => {\n  const [thingsToDoTopTips, setThingsToDoTopTips] = useState<TopTipType[]>([]);\n  // const [thingsToDoData, setThingsToDoData] = useState<ThingsToDO>();\n  // const [attractionData, setAttractionData] = useState<ATTRACTION>();\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const { user }: any = useAuthContext();\n  const isAttractionsPage = !(slug as string).includes('things-to-do-in');\n\n  // useEffect(() => {\n  //   if (attraction) {\n  //     if (!slug.includes('things-to-do-in')) {\n  //       setAttractionData(attraction as ATTRACTION);\n  //     } else {\n  //       setThingsToDoData(attraction as ThingsToDO);\n  //     }\n  //   }\n  // }, [attraction, slug]);\n\n  const fetchThingsToDoTopTips = async () => {\n    let url;\n    if (user) {\n      url = `${process.env.NEXT_PUBLIC_FIREBASE_CONNECTION}/top-tips/${\n        slug.split('/')[1]\n      }?limit=40&page=1&user=${user?.uid}`;\n    } else {\n      url = `${process.env.NEXT_PUBLIC_FIREBASE_CONNECTION}/top-tips/${\n        slug.split('/')[1]\n      }?limit=40&page=1`;\n    }\n\n    try {\n      const response = await axios.get(url);\n      setThingsToDoTopTips(response.data);\n    } catch (error) {\n      console.log(error);\n    }\n  };\n  useEffect(() => {\n    fetchThingsToDoTopTips();\n  }, [user]);\n\n  const { data, loading } = useQuery(FETCH_TOP_TIPS, {\n    variables: { slug }\n  });\n  const [top, setTop] = useState<Top[]>([]);\n  useEffect(() => {\n    if (!loading && data) {\n      setTop(data.strapi_Attraction);\n    }\n  }, [loading]);\n  const updateTopTip = async (id: string, likes: number, dislikes: number) => {\n    try {\n      const {\n        data: {\n          update_strapi_top_tips: { returning }\n        }\n      } = await updateTopTipMutation({\n        variables: {\n          id: id,\n          likes: likes,\n          dislikes: dislikes\n        }\n      });\n\n      const updatedTopTip = returning[0];\n      setTop(prevTop => {\n        const newTop = prevTop.map(top => {\n          return {\n            ...top,\n            top_tips: top.top_tips.map(tip =>\n              tip.id == updatedTopTip.id\n                ? {\n                    ...tip,\n                    likes: updatedTopTip.likes,\n                    dislikes: updatedTopTip.dislikes\n                  }\n                : tip\n            )\n          };\n        });\n        return newTop;\n      });\n    } catch (error) {\n      console.error('Error updating top tip:', error);\n    }\n  };\n  const [updateTopTipMutation] = useMutation(UPDATE_TOP_TIP);\n\n  const [toptipText, setToptipText] = useState<string>('');\n  const [insertTopTipMutation] = useMutation(INSERT_TOP_TIP);\n  const handleSubmit = async () => {\n    try {\n      const {\n        data: {\n          insert_strapi_top_tips: { returning }\n        }\n      } = await insertTopTipMutation({\n        variables: {\n          text: toptipText,\n          id: (attraction as ATTRACTION)?.id\n        }\n      });\n      const updatedTopTip = returning[0];\n      const newTopTip = {\n        id: updatedTopTip.id,\n        text: updatedTopTip.text,\n        likes: 0,\n        dislikes: 0\n      };\n      setTop(prevTop => {\n        const updatedTop = {\n          ...prevTop[0],\n          top_tips: [newTopTip, ...prevTop[0].top_tips]\n        };\n        return [updatedTop, ...prevTop.slice(1)];\n      });\n\n      setIsModalOpen(false);\n      setToptipText('');\n    } catch (error) {\n      console.error('Mutation error:', error);\n    }\n  };\n\n  return (\n    <>\n      {isAttractionsPage ? (\n        <>\n          <Head>\n            <meta\n              name=\"og:title\"\n              content={`${replaceTripshepherdWithSeeSight(\n                (attraction as ATTRACTION).page_title\n              )}`}\n            />\n            <meta\n              name=\"og:description\"\n              content={replaceTripshepherdWithSeeSight(\n                attraction.meta_description\n              )}\n            />\n            <title>\n              {replaceTripshepherdWithSeeSight(\n                (attraction as ATTRACTION).page_title\n              )}{' '}\n            </title>\n            <meta\n              name=\"description\"\n              content={replaceTripshepherdWithSeeSight(\n                attraction.meta_description\n              )}\n              key=\"metadescription\"\n            />\n            <link\n              href={replaceTripshepherdWithSeeSight(attraction.canonical)}\n              rel=\"canonical\"\n              key=\"canonical\"\n            />\n            {(attraction as ATTRACTION).banner_media &&\n              (attraction as ATTRACTION)?.banner_media !== null && (\n                <meta\n                  name=\"og:image\"\n                  content={\n                    (attraction as ATTRACTION).banner_media[0] &&\n                    (attraction as ATTRACTION).banner_media[0].image\n                  }\n                />\n              )}\n          </Head>\n          {attraction ? (\n            <AttractionPage\n              attraction={attraction as ATTRACTION}\n              handleSubmit={handleSubmit}\n              setToptipText={setToptipText}\n              updateTopTip={updateTopTip}\n              isModalOpen={isModalOpen}\n              top={top}\n              setTop={setTop}\n              setIsModalOpen={setIsModalOpen}\n              toptipText={toptipText}\n            />\n          ) : (\n            <div className=\"flex justify-center items-center h-[calc(100vh-140px)]\">\n              <LoadingSpinner className=\"w-8 h-8\" />\n            </div>\n          )}\n        </>\n      ) : (\n        <>\n          <Head>\n            <meta\n              name=\"og:title\"\n              content={replaceTripshepherdWithSeeSight(attraction.og_title)}\n            />\n            <meta\n              name=\"og:description\"\n              content={replaceTripshepherdWithSeeSight(\n                attraction.og_description\n              )}\n            />\n            <title>{replaceTripshepherdWithSeeSight(attraction.title)}</title>\n            <meta\n              name=\"description\"\n              content={replaceTripshepherdWithSeeSight(\n                attraction.meta_description\n              )}\n              key=\"metadescription\"\n            />\n            <link\n              href={replaceTripshepherdWithSeeSight(attraction.canonical)}\n              rel=\"canonical\"\n              key=\"canonical\"\n            />\n            {(attraction as ThingsToDO).og_image && (\n              <meta\n                name=\"og:image\"\n                content={(attraction as ThingsToDO).og_image}\n              />\n            )}\n          </Head>\n          {attraction ? (\n            <ThingsToDo\n              thingsToDoDetails={attraction as ThingsToDO}\n              topTips={thingsToDoTopTips}\n            />\n          ) : (\n            <div className=\"flex justify-center items-center h-[calc(100vh-140px)]\">\n              <LoadingSpinner className=\"w-8 h-8\" />\n            </div>\n          )}\n        </>\n      )}\n    </>\n  );\n};\n\nexport default SubSlug;\n","import Image from 'next/image';\nimport Link from 'next/link';\nimport { useRouter } from 'next/router';\n\ninterface IProps {\n  breadcrumbLinks: {\n    title: string;\n    hrefLink: string;\n    onclick?: () => void;\n  }[];\n  alignContent?: string;\n  isArrowSeparator?: boolean;\n  activeLinkColor?: string;\n}\n\nconst Breadcrumb = ({\n  breadcrumbLinks,\n  alignContent,\n  isArrowSeparator,\n  activeLinkColor\n}: IProps) => {\n  const router = useRouter();\n\n  const route = router.route;\n  //Always show most recent 2 links on breadcrumbs\n  const displayedBreadcrumbs =\n    breadcrumbLinks?.length > 2 && router.route === '/accounts'\n      ? breadcrumbLinks?.slice(-2)\n      : breadcrumbLinks;\n\n  const isAccountsPage = router.route === '/accounts';\n\n  return (\n    <div\n      className={`flex items-center space-x-2 text-lg font-light ${\n        route === '/accounts' || alignContent\n          ? { alignContent }\n          : 'sm:justify-center'\n      } overflow-auto whitespace-nowrap xxsm:w-[290px] xsm:w-[340px] msm:w-[390px] mmsm:w-[440px] sm:w-full no-scrollbar`}\n    >\n      {displayedBreadcrumbs?.map((breadcrumb, index) => (\n        <>\n          <Link\n            href={breadcrumb.hrefLink}\n            onClick={breadcrumb.onclick}\n            key={index}\n          >\n            <p\n              className={`${\n                breadcrumbLinks?.length === 1 ||\n                (breadcrumbLinks?.length !== 1 && index !== 0)\n                  ? `text-${activeLinkColor} ${\n                      isAccountsPage\n                        ? `font-semibold sm:text-base hover:font-semibold hover:text-primary`\n                        : `font-normal sm:text-sm hover:font-normal hover:text-darkBlue`\n                    }`\n                  : route !== '/accounts'\n                  ? 'hover:text-darkBlue sm:text-sm sm:font-normal'\n                  : 'text-black13 hover:text-primary hover:font-semibold font-semibold sm:text-base'\n              } inline-block ${\n                breadcrumbLinks.length - 1 === index && !isAccountsPage\n                  ? 'font-bold text-darkBlue' // Highlight last breadcrumb item if not on accounts page\n                  : breadcrumbLinks.length - 1 === index\n                  ? 'sm:w-full  text-[#ff4545]'\n                  : ''\n              } text-sm font-bold leading-[30px] hover:font-medium cursor-pointer`}\n            >\n              {breadcrumb.title}\n            </p>\n          </Link>\n          {breadcrumbLinks?.length - 1 !== index &&\n            (isArrowSeparator ? (\n              <Image\n                src={'/black-right-arrow.svg'}\n                alt=\"right arrow\"\n                width={16}\n                height={16}\n              />\n            ) : (\n              <span className=\"sm:px-1 xl:px-3\">/</span>\n            ))}\n        </>\n      ))}\n    </div>\n  );\n};\n\nexport default Breadcrumb;\n","import styled from 'styled-components';\n\n// Styled component for circled bullets\nconst CircledBullets = styled.ul`\n  list-style-type: disc;\n\n  li {\n    margin-left: 1.5em;\n  }\n`;\n\nexport const convertMarkdownToHtml = markdown => {\n  let html = markdown;\n\n  // Convert markdown links to HTML links\n  html = html.replace(/\\[(.+?)\\]\\((.+?)\\)/g, '<a href=\"$2\">$1</a>');\n\n  // Convert bullet lists to HTML unordered lists with custom class\n  html = html.replace(/(?:^|\\n)([-*])\\s(.+?)(?=\\n|$)/g, '<li>$2</li>');\n  html = html.replace(\n    /(<li>.*?<\\/li>)/g,\n    '<CircledBullets>$1</CircledBullets>'\n  );\n\n  // Convert newlines to HTML line breaks\n  html = html.replace(/\\n/g, '<br>');\n\n  return html;\n};\n",null,"// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin"],"names":["window","__NEXT_P","push","__webpack_require__","__webpack_exports__","Z","data","name","address","param","hoursOfOperation","split","filter","e","mapSrc","concat","encodeURIComponent","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","div","className","jsxs","id","iframe","title","src","width","height","loading","Fragment","Image","alt","priority","SUBSCRIBE_TO_NEWSLETTER","gql","Newsletter_Newsletter","user","useAuthContext","email","setEmail","useState","subscribeToNewsletter","useMutation","useEffect","emailVerified","handleSubmit","event","username","extractUserName","parts","cleanUsername","replace","preventDefault","stopPropagation","variables","status","insert_boatnew_news_letter_subscribers","affected_rows","fetch","method","body","JSON","stringify","userName","toast","success","error","Error","toString","includes","NewsletterHeading","styled","h2","withConfig","SeparatorLine","Newsletter","p","useRouter","jsx_runtime","section","form","onSubmit","input","placeholder","required","type","onChange","target","value","maxLength","minLength","button","data-mdb-ripple","data-mdb-ripple-color","require","React","React__default","_defineProperties","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","isProd","process","env","isString","o","prototype","call","StyleSheet","ref","_name","_optimizeForSpeed","optimizeForSpeed","invariant$1","_deletedRulePlaceholder","_serverSheet","undefined","_tags","_injected","_rulesCount","node","document","querySelector","_nonce","getAttribute","staticProps","_proto","setOptimizeForSpeed","bool","flush","inject","isOptimizeForSpeed","_this","makeStyleTag","getSheet","console","warn","cssRules","insertRule","rule","index","cssText","deleteRule","getSheetForTag","tag","sheet","styleSheets","ownerNode","insertionPoint","replaceRule","trim","textContent","parentNode","removeChild","forEach","reduce","rules","Array","map","cssString","relativeToTag","createElement","setAttribute","appendChild","createTextNode","head","getElementsByTagName","insertBefore","Constructor","get","condition","message","stringHash","str","_$hash","charCodeAt","cache","computeId","baseId","propsToString","String","computeSelector","css","idcss","StyleSheetRegistry","_styleSheet","styleSheet","_sheet","_fromServer","_indices","_instancesCounts","add","isArray","children","selectFromServer","keys","acc","tagName","getIdAndRules","styleId","indices","remove","invariant","tagFromServer","update","nextProps","fromServer","join","Boolean","styles","options","args","nonce","dangerouslySetInnerHTML","__html","dynamic","elements","slice","querySelectorAll","element","StyleSheetContext","createContext","displayName","useInsertionEffect","useLayoutEffect","defaultRegistry","JSXStyle","registry","useContext","info","tagInfo","exports","module","ATTRACTION_AVAILABILITY_TYPE","EPageType","INSERT_TOP_TIP","FETCH_TOP_TIPS","UPDATE_TOP_TIP","THINGS_TODO","ContentStyle","FAQs_FAQs","pageType","requirementSection","faqSection","isOpen","sectionType","toggleSection","BorderStyle","onClick","question","style","color","requirements","ul","requirement","li","answer","convertMarkdownToHtml","FaqSection","faqs","openSections","setOpenSections","faq","prevOpenSections","h1","FAQs","topTip","top","tip","myTopTips","setIsModalOpen","updateTopTip","setShowErrorModal","setMyTopTips","router","localStorage","setItem","SetTopTipHandler","parsedTopTips","parse","storedTopTips","ptt","foundTT","top_tips","find","tt","likes","dislikes","getItem","handleDisLikeClick","myToolTip","mtt","isLiked","isDisliked","handleLikeClick","handleThingstodoLikeClick","handleThingstodoDisLikeClick","showAllTips","setShowAllTips","visibleTips","setVisibleTips","handleBackButton","location","origin","asPath","addEventListener","removeEventListener","openModalHandler","href","DislikeTipHandler","LikeTipHandler","svg","xmlns","viewBox","fill","path","d","span","text","liked","disliked","Attraction_AddTopTipModal","toptipText","setToptipText","isButtonDisabled","setIsButtonDisabled","errorMessage","setErrorMessage","modalRef","useRef","handleCloseModal","current","contains","rect","x","y","rx","textarea","newText","test","rows","borderRadius","border","background","disabled","AttractionTopTips","topTips","isModalOpen","showErrorModal","setTop","citySlug","setCitySlug","allTops","currentURL","toggleModal","useCallback","isLikeClick","url","token","getCurrentToken","response","axios","put","slug","headers","Authorization","prevTop","newTop","idToken","getIdToken","post","updatedTopTip","newTopTip","updatedTop","axiosError","firebaseError","TopTips","AddTopTipModal","NotificationModal","modalType","EModalType","ERROR","buttonText","buttonHandler","Header","cityName","breadcrumbLinks","hrefLink","Breadcrumb","activeLinkColor","MobileView","attractionData","setAttractionData","thingsToDoDetails","showFullMap","radius","setRadius","mapRef","paginatedAttractionData","currentPage","attractionsPerPage","handlePageChange","expanded","setExpanded","showMapButton","setShowMapButton","attractionCardsVisible","setAttractionsCardsVisible","handleScroll","attractionsSection","getElementById","getBoundingClientRect","bottom","isInView","innerHeight","sliderDiv","scrollToElement","toggleExpand","prevExpanded","totalPages","Math","ceil","Map","EAttractionCardPageType","THINGS_TODO_PAGE","onTouchStart","LoadingSpinner","cardDetails","AttractionCard","attractionCard","isMapCard","Pagination","page","related_urls","RelatedBreadcrumbLinks","breadcrumbs","Footer","ToastContainer","position","autoClose","hideProgressBar","newestOnTop","closeOnClick","rtl","pauseOnFocusLoss","draggable","pauseOnHover","limit","ThingsToDo","isMobileView","useMediaQuery","zoomLevel","setZoomLevel","setShowFullMap","inViewSection","setInViewSection","ESectionInView","LIST","setCurrentPage","setPaginatedAttractionData","hoveredAttractionId","setHoveredAttractionId","attractionDivRef","handleMouseEnter","attractionId","handleMouseLeave","query","getSlicedAttractionData","startIndex","endIndex","scrollTo","behavior","scrollTop","city","onMouseEnter","onMouseLeave","sectionInView","MAP","setTimeout","invalidateSize","SwiperCore","use","Navigation","PageHeroSliderSkeleton","aria-hidden","_","Attraction_PageHeroSlider","photos","selectedImageIndex","setSelectedImageIndex","swiper","setSwiper","isLastSlide","setIsLastSlide","isFirstSlide","setIsFirstSlide","handleSlideChange","activeIndex","isEnd","isBeginning","handleSwiperInit","handleImageClick","slideTo","scrollIntoView","block","Swiper","onSwiper","spaceBetween","slidesPerView","effect","grabCursor","onSlideChange","onInit","navigation","prevEl","nextEl","a11y","enabled","observer","observeParents","observeSlideChildren","photo","SwiperSlide","NextImage","layout","quality","left","right","featuredNav","attraction","topTipWithMostLikesAndLeastDislikes","tipWithMostLikesAndLeastDislikes","nav","google_data","wheelchair_accessible_entrance","current_opening_hours","open_now","weekday_text","item","dayjs","format","g","clip-path","defs","clipPath","StyledCelendar","Calendar","modal","DayContainer","active","Attraction_DateAndPaxModal","tickets","attraction_availability","prices","adults","infants","setIsOpen","totalCount","setCount","selectedSlot","setSelectedSlot","selectedDate","setSelectedDate","mobileCalendar","setMobileCalendar","passengerPax","setPassengerPax","count","label","price","totalPrice","setTotalPrice","Number","childrenCount","infantsCount","updateCheckoutDetails","updateAttraction","AttractionCheckoutContext","proceedToCheckout","amount","currency","attractionName","date","tileContent","activeStartDate","view","minDate","Date","showNeighboringMonth","onClickDay","values","array","toFixed","topBar","headings","activeHeading","setActiveHeading","handleClick","scrollToSection","heading","windowMidpoint","closestHeading","closestDistance","Infinity","sectionId","toLowerCase","distance","min","abs","offset","offsetTop","DateAndPaxModal","MARKDOWN","Promise","all","then","bind","StyleMarkdown","AttractionPage","reviews","setReviews","showFullDescription","setShowFullDescription","handleSeeMoreDescription","selectedRating","setSelectedRating","reviewsCount","setReviewsCount","openDropdownIndex","setOpenDropdownIndex","dropdownRefs","handleClickOutside","showAllReviews","setShowAllReviews","visibleReviews","setVisibleReviews","loader","setLoader","fetchReviews","itemsPerPage","updatedReviews","review","createdAtSeconds","created_at","_seconds","dateAndTime","toLocaleDateString","year","month","day","fullName","firstName","lastName","userGsUrl","uid","ConvertPublicUrlToGsUrl","photoURL","userHasReviewed","some","rating","time","image","reviewId","userId","gs_url","long_description","hours_of_operation","short_description","images","back","Rating","initialValue","allowFraction","disableFillHover","fillColor","emptyColor","readonly","SVGstyle","display","size","user_ratings_total","PageHeroSlider","file","FeaturedNav","TopBar","TopTip","ReviewsSection","LocationMap","content","FREE_SALE","EXTERNAL_AVAILABILITY","_slug2_","thingsToDoTopTips","setThingsToDoTopTips","isAttractionsPage","fetchThingsToDoTopTips","log","useQuery","strapi_Attraction","update_strapi_top_tips","returning","updateTopTipMutation","insertTopTipMutation","insert_strapi_top_tips","Head","meta","replaceTripshepherdWithSeeSight","page_title","meta_description","link","canonical","rel","banner_media","og_title","og_description","og_image","alignContent","isArrowSeparator","route","displayedBreadcrumbs","isAccountsPage","breadcrumb","Link","onclick","markdown","html"],"sourceRoot":""}